2010-08-13 20 views
6

के रूप में वर्ग के सदस्य समारोह का उपयोग करना PortAudio के सी ++ बाइंडिंग में, वहाँ एक MemFunCallBackStream constructior कि के रूप में कहा जा सकता है:कॉलबैक

portaudio::MemFunCallbackStream<MyClass> streamRecord(paramsRecord, 
                *AnInstanceOfMyClass, 
                &MyClass::MemberFunction); 

जहां पिछले पैरामीटर कॉलबैक फ़ंक्शन है। हालांकि उस पैरामीटर कंपाइलर पर & ऑपरेटर का उपयोग किए बिना विफल रहता है। लेकिन जहां तक ​​मुझे पता है कि फ़ंक्शन पॉइंटर्स में उपयोग करने के लिए फ़ंक्शंस का पता प्राप्त करते समय & पैरामीटर अनुपयुक्त है। क्या यह किसी भी तरह से कॉलबैक फ़ंक्शन और पीआरटी से अलग है। func करने के लिए। वाक्य - विन्यास?

उत्तर

6

This FAQ जो बताते हैं कि आप छोड़ सकते हैं & (स्थिर सदस्य कार्यों के लिए, कम से कम), लेकिन फिर पर विभिन्न कारणों से आप सी के साथ साधारण समारोह-संकेत भ्रमित नहीं होना चाहिए देने के लिए चला जाता है ++ सदस्य समारोह लगता है संकेत दिए गए।

संपादित: मिले अधिक जानकारी here है, जो गैर स्थिर सदस्य कार्यों के लिए प्रासंगिक है: (सबसे विशेष रूप MSVC 6 और 7)

कुछ compilers आप को छोड़ देते हैं& दूँगी , यहां तक ​​कि हालांकि यह गैर मानक और भ्रमित है। अधिक मानक अनुरूप compilers (जैसे, जीएनयू जी ++ और MSVC 8 (उर्फ वी.एस. 2005)) , यह की आवश्यकता होती है ताकि आप निश्चित रूप से इसे में डाल दिया जाना चाहिए। आह्वान करने के लिए सदस्य समारोह सूचक, आप जरूरत है एक उदाहरण प्रदान करने के लिए SomeClass, और आपको विशेष ऑपरेटर ->* का उपयोग करना होगा। इस ऑपरेटर की कम प्राथमिकता है, इसलिए आपको इसे कोष्ठक में रखना होगा। [जोर जोड़ा]

2

सी ++ मानक, एकल ऑपरेटरों पर अपने अनुभाग में, कहा गया है कि एक सूचक करने वाली सदस्य & की स्पष्ट उपयोग की आवश्यकता है।