C++:指向另一个类函数的函数指针

Ale*_*Kul 3 c++ pointers function

我有2节课

class B {
public:
    int func(int i);
};

class A {
public:
    typedef int (B::*fPtr)(int);
    void run();
    B* mB;
};

void A::run() {
    // create a pointer
    fPtr p = &(B::func);
    // invoke the function
    mB->*p(2);     <------- Compilation Error
}
Run Code Online (Sandbox Code Playgroud)

我需要的是在A的运行函数中创建一个指向func()的指针.我得到一个编译错误,说mB不对应于带有1个参数的函数.

请帮忙

Sea*_*ean 6

你需要在函数表达式周围加上括号:

(mB->*p)(2);
Run Code Online (Sandbox Code Playgroud)

但正如其他人所指出的那样,几乎可以肯定有更好的方法去做你想做的事情.