2012-07-24 127 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

伟大的:D thx;) – piotrek 2012-07-24 22:02:08