【问题标题】:Invoke derived class function via pointer to base class function通过指向基类函数的指针调用派生类函数
【发布时间】:2012-07-24 21:44:00
【问题描述】:

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

类似这样的:

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

你知道怎么解决吗?

【问题讨论】:

    标签: c++ pointers virtual


    【解决方案1】:

    调用应该是:

    (a->*func)()
    

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多