通过指向基类函数的指针调用派生类函数

时间:2012-07-24 21:44:00

标签: c++ pointers virtual

我想使用它的接口在子类上调用一些方法,但是我想使用指向接口方法的指针。

这样的事情:

#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;
}

你知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

调用应该是:

(a->*func)()

(这会将成员函数指针绑定到a,然后调用成员函数。)

否则,您的代码是正确的。