मान लीजिए कि मेरे पास CallbackType
नामक मनमाने ढंग से हस्ताक्षर के साथ एक बढ़ावा :: कार्य है।क्या प्रभावशाली ढंग से कार्य करने के लिए बूस्ट :: बाइंड का उपयोग करना संभव है?
- यह
boost::bind
उपयोग करने के लिए एक समारोह है कि लगातार CallbackType रूप में एक ही तर्क लेता है लेकिन दो functors कॉल रचना के लिए संभव है?
मैं किसी भी संभावित समाधान के लिए खुला रहा हूँ, लेकिन यहाँ एक है ...
... काल्पनिक कुछ magic
टेम्पलेट का उपयोग कर उदाहरण:
Template<typename CallbackType>
class MyClass
{
public:
CallbackType doBoth;
MyClass(CallbackType callback)
{
doBoth = bind(magic<CallbackType>,
protect(bind(&MyClass::alert, this)),
protect(callback) );
}
void alert()
{
cout << "It has been called\n";
}
};
void doIt(int a, int b, int c)
{
cout << "Doing it!" << a << b << c << "\n";
}
int main()
{
typedef boost::function<void (int, int, int)> CallbackType;
MyClass<CallbackType> object(boost::bind(doIt));
object.doBoth();
return 0;
}
क्या 'जादू' को 'बांध' के संदर्भ में लागू किया जाना चाहिए? 'बाइंड' की भूमिका क्या है? निश्चित रूप से आप वास्तव में कॉलबैक में कुछ भी बाध्यकारी नहीं हैं। – Potatoswatter
'जादू' शायद कुछ टेम्पलेट होगा जो स्वचालित रूप से एक मज़ेदार बनता है जिसने दो मज़ेदारों को तर्क के रूप में लिया है + 'कॉलबैक टाइप' के सभी तर्क ... लेकिन यह केवल मेरे लक्ष्य को स्पष्ट करने के लिए है, जरूरी नहीं कि एक यथार्थवादी समाधान प्रदान करें। मैं काफी अलग सुझावों के लिए खुला हूं। – Catskul
क्या आप 'शून्य (int, int, int) 'के साथ' शून्य (शून्य)' लिखने की कोशिश कर रहे हैं? या वह सिर्फ एक टाइपो था? – MSN