class A{
private:
typedef std::function<void(A*)> Myfunction;
Myfunction actionEvent;
public:
A(){
actionEvent={std::cout<<"Hello"};
//declare a default function value here
};
void executeAction(){
this->actionEvent(this);
}
}
如何在构造函数中为myfunction指定默认值?
答案 0 :(得分:2)
您需要分配可以像具有匹配签名的函数一样调用的内容。 {std::cout<<"Hello"}
首先不是函数或可调用的,因此赋值没有意义。尝试这样的事情:
int fun(int i) {return i;}
std::function<int(int)> foo1 = fun;
或
std::function<void(A*)> foo2 = [](A* a){a->something();}
后一种语法称为Lambda。
答案 1 :(得分:1)
答案 2 :(得分:0)
使用初始化列表,并使用您想要的函数初始化std :: function。
class A;
void my_func(A* a);
class A{
private:
std::function<void(A*)> myfunction;
public:
A(): myfunction(my_func)
{}
};
void my_func(A* a)
{
//use a
}
或者,如果您希望用户指定一个函数,或使用默认的非null函数,请执行以下操作:
A(std::function<void(A*)> func = my_func): myfunction(my_func)
{}
在这种情况下,您可以构造对象,例如。
A foo;
A bar(other_func);