我正在使用C ++为使用GCC的嵌入式系统(ARM Cortex-M3)实现回调机制。首先,我定义了一个Callback抽象类,如下所示:
class Callback
{
public:
virtual void execute(void) = 0;
private:
};
然后我有一个名为SpecificClass的类,它从Callback抽象类扩展并按如下方式实现:
class SpecificCallback : public Callback
{
public:
SpecificCallback(SpecificClass* object_ = nullptr, \
void(SpecificClass:: *method_)(void) = nullptr):
object(object_), method(method_){}
void execute(void) {(object->*method)();}
private:
SpecificClass* object;
void(SpecificClass:: *method)(void);
};
正如您所看到的,SpecificCallback类与SpecificClass类绑定,如下所示:
class SpecificClass
{
public:
SpecificClass();
protected:
void interruptHandler(void);
private:
SpecificCallback callback;
};
我遇到的问题是我创建了SpecificClass的对象。我希望能做的是:
SpecificClass::SpecificClass():
callback(this, interruptHandler)
{
}
但是,当我这样做时,我得到以下编译器错误:
SpecificClass.cpp: In constructor 'SpecificClass::SpecificClass()':
SpecificClass.cpp:XXX:XX: error: no matching function for call to 'SpecificCallback::SpecificCallback(SpecificClass* const, <unresolved overloaded function type>)'
callback(this, interruptHandler)
^
SpecificClass.cpp:XXX:XX: note: candidates are:
In file included from SpecificClass.cpp:XX:X:
SpecificClass.h:XX:X: note: SpecificCallback::SpecificCallback(SpecificClass*, void (SpecificClass::*)())
SpecificCallback(SpecificClass* object_ = nullptr, \
^
任何想法或线索?谢谢!
佩尔