c++ - 函数指针问题 : passing and declaring

标签 c++ function pointers function-pointers

嘿,我正在尝试弄清楚函数指针以及如何传递它们/声明它们,但是我在我的 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/

相关文章:

c++ - IUnknown 指针引用

c - 为什么函数调用没有被执行?

c - 递增指向 C 中指针的指针

常量指针与常量值指针

c++ - 两个整数之间的随机函数生成器 C++

c++ - libcurl curl_easy_perform() 在函数内部移动时导致程序崩溃

c++ - 如何调整由两点定义的线的大小,使其受 C++ 中的最大线长度约束

Javascript getelementbyid 不起作用

javascript - 在 Javascript 函数中获取可变数量的参数

pointers - 对golang for循环的迭代值有点迷惑