7
我想知道是否有更好的方法將一個類的Boost信號直接連接到另一個類的信號?有沒有辦法將升壓信號直接連接到另一個信號?
例如想象一個facade class與一羣成員提供自己的信號。現在假設門面想要公開這些信號。我通常最終編寫樣板方法,然後將其作爲信號處理程序連接。
using namespace boost::signal;
class A
{
public:
A(){};
virtual ~A(){};
signal<void()> signalA;
};
class B
{
public:
B(){};
virtual ~B(){};
signal<void()> signalB;
};
class Facade
{
private:
A& a;
B& b;
public:
Facade(A& refA, B& refB)
: a(refA), b(refB)
{
// connect A's signal to facadeSignalA
a.signalA.connect(boost::bind(&Facade::forwardedSignalA, this));
// connect B's signal to facadeSignalB
b.signalB.connect(boost::bind(&Facade::forwardedSignalB, this));
}
virtual ~Facade() {};
// user visible signals
signal<void()> facadeSignalA;
signal<void()> facadeSignalB;
private:
// ugly boilerplate code used to forward signals
void forwardedSignalA()
{
facadeSignalA();
}
void forwardedSignalB()
{
facadeSignalB();
}
};
現在,這不是很優雅,並在一段時間後變得非常繁瑣。有沒有辦法做到這一點,而不必寫這些類型的轉發方法?
現貨!正是我在找什麼。 – djf 2012-08-05 12:33:00
該鏈接似乎已經死亡。有關的討論可以在這裏找到: https://groups.google.com/forum/#!topic/boost-list/So4i8JXneJ0 – 2016-11-25 16:50:53
@Kaan C. Fidan更新,謝謝! – 2016-11-26 18:42:35