std :: function作为委托构造函数中的参数

时间:2018-06-10 06:15:53

标签: c++11 constructor std-function

我想知道为什么控制转到AB(),如果我在main()中传递abc(AB),因为当abc(10)通过时,控件将i初始化为10

11

2 个答案:

答案 0 :(得分:1)

abc(AB);

这是名为abc的{​​{1}}类型变量的声明,相当于AB。所以调用no-arg构造函数。如果您不想命名变量,可以使用此语法:

abc AB;

这个“有效”,因为它不能被解析为声明,而你的版本可以。

但这还不够,您需要更改构造函数以接受abc{AB};

const&

(非const引用不会绑定到临时引用。)

答案 1 :(得分:0)

使用AB来调用构造函数,这是一个函数:

abc(std::function<void(void)>&fb) : func(fb) {}

这会初始化func以指向AB,但仅此而已。也许你想称之为:

abc(std::function<void(void)>&fb) : func(fb) { func(); }