मैं सोच रहा था कि क्या एक वर्ग के बूस्ट सिग्नल को सीधे किसी अन्य वर्ग के सिग्नल से कनेक्ट करने का एक अच्छा तरीका है?कोई सिग्नल सिग्नल सीधे किसी अन्य सिग्नल से कनेक्ट करने का कोई तरीका है?
उदाहरण के लिए 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
लिंक मर गया प्रतीत होता है। एक संबंधित चर्चा यहां पाई जा सकती है: https://groups.google.com/forum/#!topic/boost-list/So4i8JXneJ0 –
@ कान सी फिडन अपडेट, धन्यवाद! –