gpt4 book ai didi

c++ - 子类的成员函数指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:26:56 25 4
gpt4 key购买 nike

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

我该如何解决?谢谢

最佳答案

指向 derived 成员的指针不能转换为指向 base 成员的指针。如果是这样,您可以执行诸如 (baseInstance.*methodOfDerived)() 之类的操作,这没有任何意义。协方差正好相反:您可以获取指向 base 成员的指针,并在 derived 的实例上调用它。

目前尚不清楚您要实现的目标,但您当前的方法行不通。您需要重新考虑您的设计。

关于c++ - 子类的成员函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com