我有2个类,我想通过回调将方法从一个传递到另一个!
看到我也希望使用void(* callBack)();来保存此方法的地址。
我曾经在C中执行此操作,但我不知道如何在c++中执行此操作;
#include <iostream>
using namespace std;
class A
{
private:
void (*callBack)(); //to hold the address of the method
public:
A();
void setCallBack(void(*cB)());
void useCallBack();
};
A::A()
{
}
void A::setCallBack(void(*cB)())
{
callBack = cB;
}
void A::useCallBack()
{
callBack();
}
class B
{
private:
A * Aguy;
public:
B();
void someMethod();
void otherMethod();
};
B::B()
{
Aguy = new A();
}
void B::otherMethod()
{
Aguy->setCallBack(someMethod);
Aguy->useCallBack()
}
void B::someMethod()
{
cout << "Hello. I'm from class b" << endl;
}
int main()
{
B Bguy;
Bguy.otherMethod();
return 0;
}
最佳答案
有关详细信息,请参见c++ - <unresolved overloaded function type>。
引用答案:
将静态放在someMethod
上:
class B
{
private:
A * Aguy;
public:
B();
static void someMethod();
void otherMethod();
};
void B::otherMethod() {
Aguy->setCallBack(B::someMethod);
Aguy->useCallBack(); // adding missing semicolon
}
关于c++ - 将方法作为回调从一类传递到另一类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20037427/