0
當我嘗試編譯此代碼我得到錯誤錯誤時,升壓signals2爲void connect()的約束
In constructor 'Foo::Foo()': 15:40: error: 'bind' was not declared in this scope
#include <functional>
#include <boost/signals2.hpp>
class Foo {
public:
Foo();
void slot1(int i);
void slot2();
boost::signals2::signal<void (int)> sig1;
boost::signals2::signal<void()> sig2;
};
Foo::Foo() {
sig1.connect(bind(&Foo::slot1, this, _1)); // O K !
sig2.connect(bind(&Foo::slot2, this)); // E R R O R !
}
void Foo::slot1(int i) { }
void Foo::slot2() { }
int main() {
Foo foo;
foo.sig1(4711);
foo.sig2();
}
什麼讓我惱火的是,sig1.connect(...)
作品,但不sig2.connect(...)
。 如果我使用boost :: bind()的,而不是它的工作原理也sig2.connect(...)
sig2.connect(boost::bind(&Foo::slot2, this)); // O K !
有人可以解釋爲什麼bind()的工作原理與SLOT1但不SLOT2?
下面的代碼在網上「玩」的程度:http://cpp.sh/32ey
感謝您的解釋 –