c++ - 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
解决方案
我设法使用 std::function 获得解决方案
class Task
{
public:
std::function<void(void)> ExecuteTask;
};
然后当我使用它时,我使用:
Task *taskit = new Task();
taskit->ExecuteTask = [&]
{
//Do something
};
推荐阅读
- sql-server - 如何使用 T-SQL 在一个查询结果中获得多选
- python - 仅在数据框中提取最小值
- c# - 如何使用相同的过滤器同时过滤集合及其嵌套集合?
- c# - Application Insight 中的范围日志记录
- python - C++ DLL 中的 Python 对象
- google-api - Google 登录同意页面未针对我的应用程序请求的所有范围请求许可
- c++ - Windows 控制台调整大小被忽略 - 屏幕缓冲区搞砸了
- python - for循环中某些值的条件(Python pandas)
- java - 发布密钥无法与已部署的应用程序一起使用
- javascript - 访问 localstorage 中的 `access_token` 属性