相关疑难解决方法(0)

通过函数指针调用C++类方法

如何获取类成员函数的函数指针,然后使用特定对象调用该成员函数?我想写:

class Dog : Animal
{
    Dog ();
    void bark ();
}

…
Dog* pDog = new Dog ();
BarkFunction pBark = &Dog::bark;
(*pBark) (pDog);
…
Run Code Online (Sandbox Code Playgroud)

另外,如果可能的话,我也想通过指针调用构造函数:

NewAnimalFunction pNew = &Dog::Dog;
Animal* pAnimal = (*pNew)();    
Run Code Online (Sandbox Code Playgroud)

这是可能的,如果是这样,那么首选的方法是什么?

c++ function-pointers class-method

105
推荐指数
8
解决办法
26万
查看次数

如何通过成员函数指针调用成员函数?

我想通过member-function-pointers调用成员函数.调用函数也是成员.

class A;

typedef int (A::*memFun)();

class A
{
    int P(){return 1;}
    int Q(){return 2;}
    int R(){return 3;}

    int Z(memFun f1, memFun f2)
    {
        return f1() + f2(); //HERE
    }
public: 
    int run();
};

int A::run()
{
    return Z(P, Q);
}

int main()
{
    A a;
    cout << a.run() << endl;
}
Run Code Online (Sandbox Code Playgroud)

我没有正确地做到这一点,并且我得到错误 -

main.cpp:15:19: error: must use '.*' or '->*' to call pointer-to-member function in 'f1 (...)', e.g. '(... ->* f1) (...)'
         return f1() + f2(); //HERE
Run Code Online (Sandbox Code Playgroud)

请说明正确的方法.

编辑 …

c++

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

class-method ×1

function-pointers ×1