我想实现std::function定义的函数类型可以传递参数。
参数类型设置为void的时候,语法是没有错的:
typedef std::function<void(void)> TestFunc;
class Test{
public:
void setFunc(TestFunc f){ fn = f; }
private:
TestFunc fn;
};
void test(){
Test t;
t.setFunc(func);
}
void func(){
/*………………*/
}
有参数的时候会报语法错误:
typedef std::function<void(int,int)> TestFunc;
class Test{
public:
void setFunc(TestFunc f){ fn = f; }
private:
TestFunc fn;
};
void test(){
Test t;
t.setFunc(func);
}
void func(int i,int j){
/*………………*/
}
显示错误信息:不存在从 "void (int i, int j)" 转换到 "std::function<void (int i, int j)>" 的适当构造函数
请问这是为什么啊~