Я хочу передать функцию-член класса 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;
}
Этот блестящий кусок кода оставляет меня с ошибкой компилятора:
не может преобразовать int (A::*)(int)' to
int (*) (int) 'при инициализации
Во-первых, я хочу, чтобы он компилировался.
Во-вторых, я не хочу, чтобы dosomeA был СТАТИЧЕСКИМ.