सबसे पहले ढेर पर एक MyItem
वस्तु बना सकते हैं, इस कोड संकलन नहीं होगा क्योंकि आप प्रत्येक सदस्य चर घोषणा के बाद और MyItem
घोषणा और कीवर्ड "struct" के बाद अर्द्ध कोलन भूल गया गलत टाइप किया गया है। आपका कोड इस तरह दिखना चाहिए:
struct MyItem
{
var value;
MyItem* nextItem;
};
MyItem item = new MyItem;
अब आप अपने सवाल का जवाब देने, इस कोड क्योंकि नए ऑपरेटर वस्तु बनाया (प्रकार MyItem*
के एक मूल्य) के लिए सूचक रिटर्न काम नहीं करता है और आप इस सूचक आवंटित करने के लिए कोशिश कर रहे हैं MyItem
प्रकार के चर के लिए। कंपाइलर आपको ऐसा करने की अनुमति नहीं देता है (क्योंकि मान और चर के विभिन्न प्रकार होते हैं)। आप इस तरह की एक apropriate चर में सूचक संग्रहीत करना चाहिए,:
MyItem* item = new MyItem;
इस मामले में, आप delete item
के लिए याद स्मृति रिसाव से बचने के लिए एक बार आप कोई और अधिक इसकी जरूरत चाहिए।
वैकल्पिक रूप से, आप new
ऑपरेटर के बिना स्टैक में ऑब्जेक्ट बना सकते हैं।
MyItem item;
इस मामले में, कार्य वापस आने पर ऑब्जेक्ट अस्तित्व में रहता है; आपको इसे हटाने के लिए याद रखने की आवश्यकता नहीं है।
स्रोत
2012-08-22 13:30:12
मैंने * आइटम की कोशिश की। मामलों के बीच अंतरिक्ष सोचो?लिनक्स सर्वर बस क्रैश हो गया है, इसके बाद मुझे बैक अप लेने के लिए इंतजार करना होगा इससे पहले कि मैं इसे * और आइटम के बीच की जगह के साथ आज़मा सकूं। – kralco626
@ क्राल्को: नहीं, इससे कोई फर्क नहीं पड़ता। क्या आपके पास एक प्रारंभिक सी ++ पुस्तक है? – GManNickG
नहीं। मैं एक ऑपरेटिंग सिस्टम कक्षा ले रहा हूं। मैंने जावा में प्रोग्रामिंग कक्षाओं का एक टन लिया और सी # का उपयोग किया और अभी भी बड़े पैमाने पर काम पर। हालांकि उन भाषाओं में से कोई भी सी/सी ++ जैसे पॉइंटर्स का उपयोग नहीं करता है। यह एक ऐसे कार्यक्रम को लागू करने के साथ एक बड़ी परियोजना का हिस्सा है जो पाइपलाइनिंग करता है, (भले ही लिनक्स ने इसे बनाया है)। मेरे पास पूरी चीज लिखी गई है और मुझे यह त्रुटि मिलती है। – kralco626