使用GCC的C ++回调机制

时间:2014-09-06 20:32:17

标签: c++ callback embedded arm

我正在使用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, \
     ^

任何想法或线索?谢谢!

佩尔

0 个答案:

没有答案