std :: bind在构造函数中用于类中的回调方法

时间:2015-10-07 13:06:04

标签: c++ c++11 stdbind

我有一个课程Foo,它在课程Bar中实例化。

我需要将callback m_foo Bar分配给名为xpto()的{​​{1}}方法。 我应该可以在这里使用std::bind,对吗?我的代码出了什么问题?

Foo类:

class Foo
{
public:
   Foo(std::function<void()> cb);
}

班级栏:

class Bar
{
public:
   Bar(std::function<void()> cb);

   void xpto();
private:
   Foo m_foo;
}

Bar::Bar(std::function<void()> cb)
: m_foo(std::bind(&xpto)) // ERROR!!!?
{}

1 个答案:

答案 0 :(得分:3)

您在使用bind()

时稍微偏离了一点
class Bar
{
public:
   Bar(std::function<void()> cb);

   void xpto();
private:
   Foo m_foo;
}

Bar::Bar(std::function<void()> cb)
: m_foo(std::bind(&Bar::xpto, this)
{}

那应该有用。我不确定为什么你对cb的构造函数有Bar参数。