Monday 15 September 2014

c# - Managed C++: Strings in List is not passed back to caller -


मेरे पास एक सी # नेट कंसोल अनुप्रयोग है जो सी ++ नेट वर्ग पुस्तकालय को कॉल करता है। हालांकि, जब निम्नलिखित आवेदन निष्पादित होता है, तो सूची रिक्त हो जाती है !!!

अगर मैं इसके बाद की टिप्पणी में बताई गई रेखा को निकालता हूं, तो कोड काम करता है। मुझे इसके लिए कारण समझ में नहीं आ रहा है।

अगर मैं सी ++ क्लास पुस्तकालय में सूची के लिए मेमोरी को पुनः आवंटित करना चाहता हूं तो मैं नीचे करने की कोशिश क्यों कर रहा हूं, यह करने के बारे में सही तरीका क्या है ?

सी # 2005 कंसोल एप्लीकेशन

  क्लास कॉलर {स्टैटिक व्हाइड मेन (स्ट्रिंग [] एआरजीज़) {कैली कैली = न्यू कैली () ; सूची के & lt; स्ट्रिंग & gt; S = नई सूची & lt; स्ट्रिंग & gt; (); callee.DoSomething (रों); Console.WriteLine (s.Count); // प्रिंट्स 0}}  

सी ++ 2005 कक्षा पुस्तकालय

  सार्वजनिक रेफ़ क्लास Callee {सार्वजनिक: शून्य DoSomething (सूची & lt; स्ट्रिंग ^ & gt; ^ सूची); }; शून्य Callee :: DoSomething (सूची & lt; स्ट्रिंग ^ & gt; ^ सूची) {list = gcnew सूची & lt; स्ट्रिंग ^ & gt; (); // इस रेखा को निकालें और यह सूची काम करती है- & gt; जोड़ें (जीसीएनव स्ट्रिंग ("टेस्ट स्ट्रिंग 1")); सूची- & gt; जोड़ें (जीसीएनव स्ट्रिंग ("टेस्ट स्ट्रिंग 2")); आप इसे C ++ / CLI (सी # कोड के अनुसार) के समतुल्य चाहते हैं  

  क्लास कॉलर {स्टैटिक व्हाइड मेन (स्ट्रिंग [] एआरजी) {कैली कैली = नया कैली (); सूची के & lt; स्ट्रिंग & gt; S = नई सूची & lt; स्ट्रिंग & gt; (); Callee.Do कुछ (रेफरी एस); Console.WriteLine (s.Count); // प्रिंट आउट 0}} सार्वजनिक वर्ग Callee {void DoSomething (संदर्भ सूची & lt; स्ट्रिंग & gt; सूची) {सूची = नई सूची & lt; स्ट्रिंग & gt; (); सूची। जोड़ें ("टेस्ट स्ट्रिंग 1"); सूची। जोड़ें ("टेस्ट स्ट्रिंग 2"); }}  

ध्यान दें कि 'सूची' को संदर्भ से पारित किया गया है, इसलिए जब आप एक नई ऑब्जेक्ट को आवंटित करते हैं तो फ़ंक्शन में पास किए जाने वाले मूल वैरिएबल को बदल जाएगा।

समतुल्य C ++ / CLI सिंटैक्स इस प्रकार है:

  सार्वजनिक रेफ़ क्लास Callee {सार्वजनिक: शून्य DoSomething (सूची & lt; स्ट्रिंग ^ & gt; ^% list); }; शून्य Callee :: DoSomething (सूची & lt; स्ट्रिंग ^ & gt; ^% सूची) {सूची = जीसीएनयू सूची & lt; स्ट्रिंग ^ & gt; (); सूची- & gt; जोड़ें (जीसीएनव स्ट्रिंग ("टेस्ट स्ट्रिंग 1")); सूची- & gt; जोड़ें (जीसीएनव स्ट्रिंग ("टेस्ट स्ट्रिंग 2")); }  

"%" को उस प्रकार के अलावा जोड़ने के लिए सूची को एक ट्रैकिंग संदर्भ के रूप में पारित किया जाएगा।

ट्रैकिंग संदर्भों के बारे में अधिक जानकारी

पर पाई जा सकती है

No comments:

Post a Comment