C ++实现回调函数

时间:2016-02-26 16:36:34

标签: c++

我知道这个问题已经多次讨论过,但似乎我能找到一个我完全可以理解的答案。

我的问题是如何将成员函数作为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");
}

0 个答案:

没有答案