पर समारोह सूचक कॉलिंग?मैं एक समारोह सूचक द्वारा परिभाषित किया गया है एक सी ++ एक विशिष्ट वस्तु दृष्टान्त
class A
{
private:
EventFunction handler;
public:
void SetEvent(EventFunction func) { handler = func; }
void EventOne() { handler(1); }
};
class B
{
private:
A a;
public:
B() { a.SetEvent(EventFromA); } // What do I do here?
void EventFromA(int nEvent) { // do stuff }
};
संपादित करें: ओरियन विकल्पों बूस्ट जैसे प्रस्तावों ने कहा:
boost::function<int (int)> f;
X x;
f = std::bind1st(
std::mem_fun(&X::foo), &x);
f(5); // Call x.foo(5)
दुर्भाग्य से बूस्ट मेरे लिए एक विकल्प नहीं है। क्या कोई "करीइंग" फ़ंक्शन है जिसे सी ++ में लिखा जा सकता है जो किसी सामान्य फ़ंक्शन पॉइंटर में किसी सदस्य फ़ंक्शन में पॉइंटर की इस तरह की रैपिंग करेगा?
हाँ, वहाँ एक सी ++ currying समारोह, कहा जाता tr1 :: बाँध या बढ़ावा देने :: बाँध है! और हां, करीबी परिणाम रखने के लिए एक रैपर है। इसे tr1 :: फ़ंक्शन या बूस्ट :: फ़ंक्शन कहा जाता है। – Aaron
क्या कोई कृपया C++ 11 std :: फ़ंक्शन का उपयोग कर कोड स्निपेट उत्तर प्रदान कर सकता है? मैं सी ++ सीख रहा हूं और यह मुझे भ्रमित कर रहा है, क्योंकि मुझे ऐसी मूलभूत चीज़ उपलब्ध होने की उम्मीद है, फिर भी नीचे दिए गए सभी उत्तर जो बूस्ट या सी ++ 11 पर वापस आते हैं, वास्तव में कोड स्निपेट/हाउटो प्रदान नहीं करते हैं। – Dima