c++ - 您可以传递一个函数以便稍后调用它吗?

标签 c++ function class object

我希望对象具有一种调用函数的方法(但每个对象都应调用不同的函数)。我将尝试通过示例向您展示我的意思:

class Human
{
    public:
        void setMyFunction(void func);  // specify which function to call
        void callMyFunction();  // Call the specified function
};

void Human::setMyFunction(void func)    // ''
{
    myFunction = func;
}

void Human::callMyFunction()    // ''
{
    myFunction();
}

void someRandomFunction()   // A random function
{
    // Some random code
}

int main()
{
    Human Lisa;     // Create Object
    Lisa.setMyFunction();   // Set the function for that object
    Lisa.callMyFunction();  // Call the function specified earlier
}

此代码(显然)不起作用,但我希望您理解我要完成的任务。

MfG、TPRammus

最佳答案

您可以使用 std::function

#include <functional>

class Human
{
    std::function<void()> mFunc;
public:
    void setMyFunction(std::function<void()> func) { mFunc = func; }
    void callMyFunction() { if (mFunc) mFunc(); }
};

Demo

关于c++ - 您可以传递一个函数以便稍后调用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41493794/

相关文章:

javascript - 带函数的 JavaScript 闭包是如何工作的?

c++ - 在 C++ 中检查变量是否为整数

php - PHP 中可以嵌套类吗?

c++ - 用于分析 C++ 代码库的工具

c++ - 如何在不暴露使用的容器的情况下暴露迭代器?

c++ - 递归在指数平方中的工作?

javascript - 使用 NEW 时从 javascript 函数返回

c# - 在另一个对象中实例化一个对象? (C#)

c++在程序中使用私有(private)类数据

c++ - 将简体中文GB2312文本字符转换成UTF 8