我知道这个问题已经多次讨论过,但似乎我能找到一个我完全可以理解的答案。
我的问题是如何将成员函数作为CPP中的回调传递给第二个类,而不使用boost库。
我一直遇到Api调用,其中回调逻辑就是这样实现的。 entity.func(MyClass :: somemethod,this);
我想使用这种表示法;
---------------------------- DeviceHub Class ----------------- --------
DeviceHub
实例化需要VirtualDevice
方法作为回调传递的n DeviceHub
,以便VirtualDevice
对象可以通知DeviceHub
对象。 / p>
class DeviceHub{
public:
DeviceHub(int n);
virtual ~DeviceHub();
int virtualDeviceCallback(std::string s);
std::vector<VirtualDevice> virtual_devices;
}
DeviceHub::DeviceHub(int n){
int i;
for(i = 0; i < n; i++){
VirtualDevice vd = VirtualDevice(...,this); //pass callback method and context
virtual_devices.push_back(vd);
}
}
DeviceHub::virtualDeviceCallback(std::string s){
/*do something...*/
}
---------------------------- VirtualDevice Class ----------------- --------
class VirtualDevice{
public:
VirtualDevice(callbackmethod, context);
virtual ~VirtualDevice();
int id;
}
VirtualDevice::VirtualDevice(callbackmethod, context){
//do something
//than fire callback
//context.callbackmethod("some string");
}