2012-07-24 4 views
0

인터페이스를 사용하여 하위 클래스에 대한 일부 메소드를 호출하려고하지만 인터페이스 메소드에 대한 포인터를 사용하려고합니다. 이 같은기본 클래스 함수에 대한 포인터를 통해 파생 클래스 함수 호출

뭔가 :

#include <iostream> 

using namespace std; 


class IA 
{ 
    public: 
    virtual void f() = 0; 
}; 

class A : public IA 
{ 
    public: 

    virtual void f() 
    { 
     cout<<"A::f()"<<endl; 
    } 
}; 

int main() 
{ 
    typedef void (IA::*Func)(); 

    Func func; 
    func = &IA::f; 

    IA *a = new A(); 

    a.*(func); 

    delete a; 

    return 0; 
} 

이 어떻게 해결하기 위해 당신은 알고 계십니까?

답변

3

호출해야합니다 :

(a->*func)() 

는 (이 다음 멤버 함수를 호출 a에 멤버 함수 포인터를 바인드합니다.)

그렇지 않으면 코드가 맞습니다.

+0

Great : Dthx;) – piotrek

관련 문제