分配默认值std :: function

时间:2016-01-20 11:35:48

标签: c++ c++11

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指定默认值?

3 个答案:

答案 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)

您可以使用默认参数和&#34;执行&#34;来定义构造函数。成员函数的方式如下:

<html>

Live Demo

答案 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);