我想做一个存储函数指针的类,但是当我想将它们存储在成员变量中时,我得到了这个错误:
无效使用成员函数(你忘了'()'吗?)
¿我的错误在哪里?
class Button {
public:
Button(PS3USB * ps3, ButtonEnum button, void (*onPress)(void) = nullptr,
void (*onRelease)(void) = nullptr) {
PS3 = ps3;
status = false;
ERROR ---> onPressFunction = onPress; <--- ERROR
ERROR ---> onReleaseFunction = onRelease; <--- ERROR
id = button;
}
void check() {
if (PS3->getButtonClick(id) && !status) {
if (onPressFunction != nullptr) {
onPressFunction();
}
status = !status;
} else if (!PS3->getButtonClick(id) && status) {
if (onReleaseFunction != nullptr) {
onReleaseFunction();
}
status = !status;
}
}
private:
bool status;
PS3USB * PS3;
ButtonEnum id;
void * onPressFunction(void);
void * onReleaseFunction(void);
};
由于
答案 0 :(得分:10)
void * onPressFunction(void);
void * onReleaseFunction(void);
这些是成员函数的声明,而不是函数指针。要声明指向函数的指针,请使用:
void (*onPressFunction)(void);
void (*onReleaseFunction)(void);
答案 1 :(得分:2)
void * onPressFunction(void);
void * onReleaseFunction(void);
以上这些都没有声明一个函数指针,但它们创建了一个成员函数,每个函数返回一个指向void的指针,我想你的意思是:
void (* onPressFunction)(void);
void (* onReleaseFunction)(void);
另外,对于函数指针,我建议你使用typedefs
或std::function
Typedef示例
typedef void(*onReleaseFunction)(void);
它可以像这样使用:
onReleaseFunction func = &functionname;