【发布时间】:2020-03-29 21:38:11
【问题描述】:
我知道,很多帖子都在问这个问题,已经阅读了大约 10 篇答案很长的帖子,但是,每篇帖子似乎都不同,需要不同的实施。
那么,我在这里做错了什么?
#include <iostream>
using namespace std;
class Foo {
public:
void callbackFunc(void (*funcParam1)());
void funcA();
};
void Foo::callbackFunc(void (*funcParam1)()) {
funcParam1();
}
void Foo::funcA() { cout << "func A OK.." << endl; }
void aa(){
int x =0;
}
Foo bar;
int main() { bar.callbackFunc(bar.funcA); }
此示例在main() 中抛出error: invalid use of non-static member function ‘void Foo::funcA()’,尤其是在callbackFunc 参数中。
我想稍后在 arduino 中使用它。
【问题讨论】:
-
你需要一个对象来调用成员函数
-
成员函数指针不同于常规函数指针 (stackoverflow.com/questions/2402579/…)
-
目前尚不完全清楚您想通过该设计实现什么,因为
callbackFunc会立即调用该函数。您是否真的想存储回调以供以后调用?签名总是void(*)()吗? -
&Foo::funcA不是bar.funcA。 -
@idclev463035818
&Foo::funcA是引用非静态成员函数的正确语法。
标签: c++ function class arduino callback