【问题标题】:Pass function to class and set a class function to the function passed in将函数传递给类,并为传入的函数设置一个类函数
【发布时间】:2020-12-18 16:39:02
【问题描述】:

我正在尝试将一个函数传递给一个类,并将一个类函数设置为传入的函数。

按钮.h

class Button
{
public:
    Button(void(*onClick)());
    ~Button();

    void onClick();
}

按钮.cpp

#include "Button.h"

Button::Button(void(*onClick)())
{
    this->onClick = onClick;
}

当我尝试编译它时,我得到了

指向绑定函数的指针只能用于调用函数

【问题讨论】:

  • void onClick(); 应该类似于 void (*onClick)();。您显然已经知道如何声明指向函数的指针——您是为构造函数的参数做的。所以以同样的方式声明你的数据成员。
  • 这不是它的工作原理。
  • @IgorTandetnik 我刚刚尝试过,但它不起作用。
  • 定义“不起作用”。你期望什么结果,你观察到什么?显示您当前正在编译的代码,以及它产生的任何错误消息。
  • @IgorTandetnik 没关系,谢谢

标签: c++ class function-pointers


【解决方案1】:

您需要使用函数指针或std::function

函数指针:

using void_func_ptr = void (*) ();

void_func_ptr = other_function;

std::function:

auto void_func_ptr = std::bind(other_function);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2022-01-22
    相关资源
    最近更新 更多