2009-08-25 8 views
6

मैं एक सी ++ भाषा मैं एक अजीब त्रुटि हो रही है जब मैं DataTable इसके देने त्रुटिसंदर्भ प्रकार पर 'नया' का उपयोग नहीं कर सकता; इसके बजाय 'gcnew' का उपयोग करें? वी.एस. में 2005

सिस्टम :: डाटा :: DataTable के एक साधारण वस्तु बनाने के लिए कोशिश कर रहा हूँ उपयोग कर रहा हूँ * myDataTable = नए DataTable();

मैंने भी यह सिस्टम :: डेटा :: डेटाटेबल myDataTable = नया डेटाटेबल(); निम्नलिखित त्रुटि प्राप्त करने में मदद करें।

त्रुटि C2750: 'सिस्टम :: डेटा :: डेटाटेबल': संदर्भ प्रकार पर 'नया' का उपयोग नहीं कर सकता; का उपयोग करें 'gcnew' के बजाय त्रुटि C2440: 'आरंभ': से परिवर्तित कर सकते हैं नहीं 'सिस्टम :: डाटा :: DataTable *' 'करने के लिए सिस्टम :: डाटा :: DataTable^

उत्तर

11

भाषा का प्रयोग कर रहे C++/CLI कहा जाता है, नहीं सादा सी ++। C++/CLI में, आप DataTable जैसे .NET सामानों तक पहुंच सकते हैं। अर्थ विज्ञान कच्चे संकेत से थोड़ा भिन्न होते हैं:

DataTable^ myDataTable = gcnew DataTable; 

"^" अर्थ है एक managed handle। हुड के तहत, यह जीसी ढेर पर एक वस्तु के लिए एक सूचक है। आप प्रबंधित हैंडल पर पॉइंटर अंकगणित नहीं कर सकते हैं। आप उन्हें मैन्युअल रूप से delete नहीं करते हैं। जीसी उनका ख्याल रखेगा। वस्तुओं को तब तक स्थानांतरित करने के लिए भी स्वतंत्र है जब तक कि वे स्पष्ट रूप से पिन न हों। gcnew प्रबंधित ढेर पर वस्तुओं को आवंटित करने के लिए प्रयोग किया जाता है। यह एक कच्चे सूचक नहीं, एक हैंडल देता है। आप new का उपयोग कर अप्रबंधित सी ++ ढेर पर .NET संदर्भ प्रकार नहीं बना सकते हैं।

+0

प्रभावशाली मेहदाद, यह मेरी समस्या हल हो गया। बहुत बहुत धन्यवाद :) – Sachin

+0

+1 बहुत संक्षिप्त! –

संबंधित मुद्दे