嘿,我正在尝试弄清楚函数指针以及如何传递它们/声明它们,但是我在我的 Button 类构造函数中传递指针并将其成员函数指针设置为传递的指针时遇到了一些麻烦。
- 当我写 Button(Func1) Button1 时,它说需要一个 ';'
- 当我写 Button(Func1);它说 Button 没有默认构造函数
- 当我写 Button(&Func1);它说 Func1 需要一个初始化程序
- 当我写 Button(&Func1()) Button1;它说表达式必须是左值或函数指示符
我做错了什么?
void Func1(){std::cout << "This is a function\n";};
void Func2(){std::cout << "This is another function\n";};
class Button
{
private:
void (*Func)(void);
public:
void Activate(){ Func() ;};
Button( void (*Function)(void)){
this->Func = Function;};
};
Button(&Func1) Button1;
Button(&Func2) Button2;
Button1.Activate();
Button2.Activate();
最佳答案
这段代码有错误的语法:
Button(&Func1) Button1;
Button(&Func2) Button2;
应该是:
Button Button1(&Func1);
Button Button2(&Func2);
和函数指针声明:
void (*Func)(void);
参数不带void:
void (*Func)();
编辑:工作示例位于ideone .
关于c++ - 函数指针问题 : passing and declaring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822154/