子类的成员函数指针

时间:2013-07-26 21:49:27

标签: c++

我有一个类SFAPin,有一种方法:

SFAPin::addListener(void (SFAState::*)(SFAPinEvent&), uint8_t){};

但是当我尝试为此方法传递另一个类的一个方法时:

void InitialState::lightChange(SFAPinEvent &event){};

...

light.addListener(&lightChange, SFAPinEvent::PIN_CHANGE);

我得到了:

错误:没有匹配函数来调用'SFAPin :: addListener(void(InitialState :: *)(SFAPinEvent&),uint8_t)' 注意:候选者是:void SFAPin :: addListener(void(SFAState :: *)(SFAPinEvent&),uint8_t) Obs:InitialState扩展SFAState,但不起作用

我正在使用arduino IDE并且不支持C ++ 11的lambda

我该如何解决? 感谢

1 个答案:

答案 0 :(得分:1)

指向derived成员的指针不能转换为指向base成员的指针。如果是的话,你可以做(baseInstance.*methodOfDerived)()这样没有意义的事情。协方差反过来说:你可以指向base的成员,并在派生的实例上调用它。

目前还不太清楚你想要实现的目标,但你目前的方法并不会成功。你需要重新考虑你的设计。