子类的成员函数指针

Member function pointers for subclass

本文关键字:指针 函数 成员 子类      更新时间:2023-10-16

我有一个类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

我该如何解决?感谢

指向派生成员的指针不能转换为指向基成员的指针。如果是的话,你可以做(baseInstance.*methodOfDerived)()之类的事情,但这没有意义。协方差则相反:您可以将指针指向基的成员,并在派生的实例上调用它。

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