c++ - call objective c method from cpp method -


मेरे पास ऐसा सीपीपी वर्ग है ..

  class MyContactListener: public b2ContactListener {int countContact; /// यह एक उद्देश्य सी क्लास है ... HelloWorld * hel; सार्वजनिक: शून्य अंत संपर्क (बी 2 सी संपर्क * संपर्क) {/ / मूल उद्देश्य सी ऑब्जेक्ट प्रारंभ करें = [[हैलोवाल्ड आलोक] आटोरेक्झेस]; /// कॉल उद्देश्य सी पद्धति ......... [प्रारंभ करनासंचार]; }};  

सीपीपी वर्ग के अंदर मैं एक उद्देश्य सी पद्धति को कॉल करता हूं। उद्देश्य सी विधि दिखता है ..

  - (शून्य) शुरू करेंसंपर्क {shakeCounter ++; [_label सेटस्ट्रिंग: [NSString stringWithFormat: @ "% d", शेक क्रॉपर]]; }  

उद्देश्य सी विधि को बुलाया जाता है .... और भी चर शेक क्वॉर्टर में वृद्धि हुई ..... लेकिन _label स्ट्रिंग अपडेट नहीं की गई है .... _ लेबल ठीक से आरंभीकृत है और ठीक से काम करें अगर मैं उद्देश्य सी वर्ग से स्वयं का उपयोग करके उद्देश्य सी पद्धति को बुलाता है ....

क्या कोई भी मदद कर सकता है ???

Itemprop = "text">

उद्देश्य- c वर्ग के तरीकों को कॉल करने के लिए संपर्क श्रोता में एक प्रतिनिधि का उपयोग करें:

  class MyContactListener: सार्वजनिक b2ContactListener {public: MyDelegateClass * delegate; शून्य प्रारंभसंचार (b2Contact * संपर्क) {[प्रतिनिधि शुरू करेंसंचार: संपर्क करें]; } शून्य अंतसंवाद (बी 2 सी संपर्क * संपर्क) {[प्रतिनिधि अंत संपर्कः संपर्क करें]; } शून्य PreSolve (b2Contact * संपर्क, const b2Manifold * oldManifold) {[प्रतिनिधि preSolve: संपर्क मैनिफोल्ड: पुराना MANifold]; } शून्य पोस्टसोलिव (b2Contact * contact, const b2ContactImpulse * आवेग) {[प्रतिनिधि पद सेलेव: संपर्क आवेग: आवेग]; }};  

प्रतिनिधि के लिए एक प्रोटोकॉल घोषित करें:

  #import "Box2D.h" @protocol B2ContactListener & lt; NSObject & gt; - (शून्य) शुरू करेंसंचार: (बी 2 सी संपर्क *) संपर्क; - (शून्य) अंतसंवाद: (बी 2 सी संपर्क *) संपर्क; - (शून्य) पूर्व सोल: (बी 2 सी संपर्क *) कई गुना संपर्क करें: (कॉन्स्ट बी 2 मैनिफ़ोल्ड *) पुराना मैनिफोल्ड; - (शून्य) पोस्टसोलिव: (बी2Contact *) संपर्क आवेग: (कॉन्स्ट बी 2 सीटैक्टक्ट इंपौल्स *) आवेग; @end  

प्रोटोकॉल का कार्यान्वयन करने वाला इंटरफ़ेस घोषित करें:

  @ इंटरफेस MyDelegateClass: CCLayer & lt; B2ContactListener & gt; {// इंटरफ़ेस कोड यहां है। } @end @implementation MyDelegateClass - (शून्य) शुरू करेंसंपर्क: (बी2Contact *) संपर्क करें {// अपने कोड को यहां लागू करें} - (शून्य) अंत संपर्क: (बी 2 सी संपर्क) * संपर्क करें {// अपने कोड को यहां लागू करें} - (शून्य) preSolve: (B2Contact *) संपर्क कई गुना: (कॉन्स्ट बी 2 मैनिफ़ोल्ड *) पुराने मैनिफ़ोल्ड {// अपना कोड यहां लागू करें} - (शून्य) पोस्टसोलिव: (बी 2 सीटक्टक्ट *) संपर्क आवेग: (कॉन्स्ट बी 2 सीटैक्टक्ट इंपोलस *) आवेग {// अपना कोड यहां लागू करें} @ेंड  

प्रतिनिधि बनाएं और इसे अपने कोड में निर्दिष्ट करें। इसे अपने विश्व वस्तु में सेट करें:

  MyContactListener * listener = new MyContactListener (); श्रोता- & gt; प्रतिनिधि = स्वयं; दुनिया _- & gt; SetContactListener (श्रोता);  

अब आपका उद्देश्य-सी क्लास इवेंट्स प्राप्त करेगा।


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -