【发布时间】:2012-09-05 10:44:42
【问题描述】:
我有一个需要更多回调的类.. 我正在尝试使用接口来实现它们:
class CallbacksInterface
{
public:
virtual bool mycallback1() = 0;
virtual bool mycallback2() = 0;
virtual bool mycallback3() = 0;
};
Class BusImplementation{
public:
addRequest(bool (CallbacksInterface::*callback)());
}
回调是addRequest()方法的参数,定义为指向接口方法的指针。 所以我想添加请求..
//class with callbacks
class Main:CallbacksInterface{
public:
bool mycallback1(){..};
bool mycallback2(){..};
bool mycallback3(){..};
//..
}
BusImplemantation bus;
Main main;
bus.addRequest(main.mycallback1);
bus.addRequest(main.mycallback2);
bus.addRequest(main.mycallback3);
但我无法将回调传递给我的 BusImplementation 类
error: argument of type 'bool (Main::)()' does not match 'bool (CallbacksInterface::*)()'
我认为有一个使用模板的解决方案,但我正在编写嵌入式设备并且我的编译器是有限的。
【问题讨论】:
-
拥有一个代表单个函数的回调接口,并将指针传递给它的不同实现不是更简单吗?或者更好的是,使用
std::functions? -
如果你使用公共继承有帮助吗,即
class Main: public CallbacksInterface? -
以防万一您使用实际软件项目中的类型名称 -
BusImplemantation中有一个错字。