首页 > 解决方案 > C++ 委托?(传递要运行的函数)

问题描述

所以我对 c++ 相当陌生,而且我来自 c# 的背景,所以这是一个很大的挑战,我正在努力解决一个在 c# 中相当简单但在 c++ 中似乎很痛苦的问题

所以我有一个类 TASK,它有一个名为 ExecuteTask(); 的函数;

class Task
{
public:
    virtual void *ExecuteTask(void* foo);
};

此任务在添加到计划时称为线程池

我想要做的是这样的

    Task *taskit = new Task();
    taskit->ExecuteTask(new void {

});

我知道这在 C# 中非常简单,因为你有委托,你可以使用类似的东西+= delegate { // Do something }

我正在使用带有 MS 标准库和 C++ 的 Visual Studio 2017

标签: c++visual-studio

解决方案


我设法使用 std::function 获得解决方案

class Task
{
public:
     std::function<void(void)> ExecuteTask;
};

然后当我使用它时,我使用:

Task *taskit = new Task();
taskit->ExecuteTask = [&]
{
    //Do something
};

推荐阅读