【问题标题】:how to use function as variable c++如何将函数用作变量c ++
【发布时间】:2018-11-26 09:35:04
【问题描述】:

我想根据自己的需要用 C++ 创建某种事件系统

我知道你可以使用函数作为其他函数参数

可能是我错过了什么(但在 c# 中你可以使用事件处理程序来做到这一点)

【问题讨论】:

标签: c++ class variables class-variables


【解决方案1】:

您可以使用“Observer Pattern”(另见UML):

每个事件侦听器都必须派生自包含事件方法的抽象类(观察者)。您可以在此类派生类中实现您的特定事件侦听器代码。 Subject 类包含所有事件侦听器对象(抽象类 Observer 的向量),并在事件发生时通知它们。

【讨论】:

    【解决方案2】:

    您可以将其存储在指针中。 例如

    void func(int a) { ... }
    void (*ptr)(int) = &func;
    (*ptr)(5); // call the function with value 5
    

    ptr 是一个指针,它将函数的内存作为值,该函数具有一个“int”参数和“void”作为返回类型。

    【讨论】:

    • 在 C++11 中,lambda expressions 更相关
    • std::function 对象要容易得多。
    • @JesperJuhl ,我需要为此包含什么文件?
    • @金属猫 - <functional>。正如在the documentation 中很容易看到的那样。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2021-01-19
    • 2017-01-13
    • 2020-11-15
    • 2023-03-09
    • 1970-01-01
    • 2013-12-23
    相关资源
    最近更新 更多