我有一个使用预先存在的库的类。有一个函数调用需要一个函数指针,我试图传入我的类中的函数。它虽然没有编译。我该怎么做才能解决这个问题? (另外,我确信以前会以更清晰的方式询问过这个问题。我对此不满意,所以我很抱歉)。 注意:这是针对arduino的。
在我的主程序中,我有以下代码......
#include "CM.h"
CM cm;
void setup() {
cm.setup();
}
CM.h
class CM {
private:
LibClass *lib;
void onInit();
public:
void setup();
};
CM.cpp
#include "CM.h"
void CM::setup() {
lib->attach(onInit); // <-- this isn't working.
}
void CM::onInit() {
Serial.println("HERE I AM");
}
答案 0 :(得分:0)
要传递成员函数,您需要使其成为&#34;静态&#34;然后使用全范围限定符传递它:
#include <iostream>
void attach( void (*func)(void) );
class CM {
private:
static void onInit();
public:
void setup();
};
void CM::setup()
{
attach(CM::onInit);
}
void CM::onInit(void)
{
std::cout << "HERE I AM";
}
// a global function pointer for this example
void (*p_func)(void);
// a "library" attach function
void attach( void (*func)(void) )
{
p_func = func;
}
int main(int argc, const char * argv[]) {
CM my;
my.setup();
p_func(); // like the library call
return 0;
}