【发布时间】:2014-04-17 22:06:55
【问题描述】:
我正在学习使用 std::function 来传递函数。我从 MSDN 站点获取了代码,它向我展示了如何了解进程是否已启动。
我知道函数 void signal_onProcessStart 不是必需的,我稍后会放大它。
我的问题是我的编译器告诉我 std::function 存在错误。
表达式不会导致接受 1 个参数的函数。
我使用的是德文版的 Visual Studio,所以我翻译了它。我认为错误在英语中的称呼不同。
所有应触发的函数都以“返回值”为空,唯一的参数为 HRESULT*。
问候
编辑:
我做了一个同样错误的小例子:
#include<functional>
#include<iostream>
#include<Windows.h>
using namespace std;
class workingClass
{
private:
std::function<void(int)> f;
public:
workingClass(std::function<void(int)> p)
{
this->f = p;
}
void triggerme(int x)
{
this->f(x);
}
~workingClass(){}
};
class managingClass
{
private:
function<void(int)> f;
workingClass * ptr;
int x;
protected:
void trigger(int x)
{
this->f(x);
}
public:
managingClass(function<void(int)> f)
{
this->f = f;
function<void(int)> tmp = bind(&managingClass::trigger, this->x);
ptr = new workingClass(tmp);
ptr->triggerme(20);
}
~managingClass(){}
};
void triggered(int x)
{
cout << "it is triggered";
}
int main()
{
function<void(int)> t = bind(&triggered, 20);
managingClass temp(t);
system("pause");
}
文件功能中的ERROR LINE 1149 表达式不会产生接受 1 的函数
【问题讨论】:
-
你能把代码墙减少到[minimal, but complete test case],然后把它贴在这里而不是粘贴箱吗?并请指出哪一行产生了错误。
-
查看标记编辑:我想做的一个小例子。
标签: c++ visual-c++ c++11 std std-function