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

标签 c++ pointers virtual

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

像这样:

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

你知道怎么解决吗?

最佳答案

调用应该是:

(a->*func)()

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

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

关于c++ - 通过指向基类函数的指针调用派生类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639788/

相关文章:

C函数修饰/多态

c++ - virtual 关键字在函数声明中的位置

c++ - 'this'指针是否参与虚函数多态行为

c++ - Spritebatch 只绘制第一个 Sprite

c++ - qt 在 showEvent() 上隐藏一个控件

c++ - 查找集合的所有子集

c++ - MySQL 不正确的日期时间值 : '12/31/2016 23:59:59' for function str_to_date

c - 插入和操作结构体指针的动态数组

c - 为什么int指针可以存储字符串?

android - 目标 google API 和目标 android 之间的区别