误解函数指针 - 将其作为参数传递

Ste*_*tef 4 c++ function-pointers

我想通过函数指针作为参数将类A的成员函数传递给类B. 请告知这条道路是否在某处领先,并帮助我填补坑洼.

#include <iostream>


using namespace std;

class A{
public:

int dosomeA(int x){
    cout<< "doing some A to "<<x <<endl;
    return(0);
}
};

class B{
public:

B(int (*ptr)(int)){ptr(0);};
};

int main()
{
A a;
int (*APtr)(int)=&A::dosomeA;

B b(APtr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段精彩的代码让我遇到编译器错误:

int (A::*)(int)' to初始化时无法转换int(*)(int)'

首先,我想要它编译.
其次,我不希望dosomeA成为STATIC.

CB *_*ley 6

成员指针与普通函数指针不同.由于编译器错误指示&A::dosomeA实际的类型,int (A::*)(int)而不是int (*)(int).

在里面B的构造函数中,你需要一个A使用一个.*->*运算符来调用成员的实例.

例如'

B(int(A::*ptr)(int))
{
    A atmp;
    (atmp.*ptr)(int);
}
Run Code Online (Sandbox Code Playgroud)