2013-03-21 7 views
6

मैंने सी ++ में एक लिंक्ड सूची परिभाषित की है। 'शून्य':: मैं चर सिर के लिए एक शून्य मान सेट करने (Movie_LinkedList के निर्माता में) कोशिश कर रहा हूँ, लेकिन मैं मिल गया:सेट हेड टू न्यू ('न्यूल': अविकसित पहचानकर्ता)

movie.h (40): त्रुटि C2065 अघोषित पहचानकर्ता

कृपया ध्यान दें कि मैं iostream

के अलावा किसी भी पुस्तकालय शामिल नहीं कर सकते किसी भी मदद की सराहना की!

+1

ऐसा इसलिए है क्योंकि 'न्यूल' हैन ' टी परिभाषित किया गया है। या तो इसे परिभाषित करें या 'head = 0' – Nick

+0

सेट करें आपने अपना कोड क्यों हटाया? – doctorless

+0

क्योंकि ऐसे छात्र हैं जो मेरे कोड की प्रतिलिपि बना सकते हैं .. –

उत्तर

10

यह आपके कार्यक्रम में परिभाषित नहीं है। आमतौर पर, यह एक मानक शीर्षलेख फ़ाइल (विशेष रूप से cstddef या stddef.h) में परिभाषित किया गया है। चूंकि आप iostream तक सीमित हैं, अगर आपको उस शीर्षलेख से पूर्ण रूप से पूर्ण नहीं मिलता है, तो आप 0 या सी ++ 11, nullptr में भी उपयोग कर सकते हैं, जो एक कीवर्ड है और उसे हेडर की आवश्यकता नहीं है।

+0

मैक्रो के लिए हेडर फ़ाइल समेत अनावश्यक है। मैं डाउनवॉटर नहीं हूं हालांकि –

+0

ओपी को हेडर शामिल करने की अनुमति नहीं है! –

+0

@ एनीनेट 'एनयूएलएल' पाने के लिए _only_ तरीका मानक हेडर में से एक को शामिल करता है जो इसे परिभाषित करता है। –

5

आपको <stddef.h> या <cstddef> शामिल करना चाहिए।

हालांकि आप 0 या nullptr का भी उपयोग कर सकते हैं।

+0

मुझे लगता है कि 'nullptr' केवल C++ 11 – Nick

+0

के लिए हैडर को हेडर शामिल करने की अनुमति नहीं है। और एक पूर्णांक के लिए एक सूचक को असाइन करने से संकलक त्रुटि हो जाएगी। –

+1

नहीं, यह नहीं होगा। 'Int * p = 0; 'बहुत आम कोशिश करें। – metal

1

कोई पुस्तकालयों की आवश्यकता नहीं है!

हेडर फाइल के शीर्ष पर

,

ऐसा करते हैं:

#ifndef NULL 
#define NULL (0) 
#endif 
+0

यह मानक द्वारा निषिद्ध है, और परिणाम अपरिभाषित व्यवहार में परिणाम। –

+0

इससे भी बदतर: आपके द्वारा दी गई परिभाषा कानूनी भी नहीं है। –

+0

@JamesKanze यह अब कानूनी है –

1

निम्न का उपयोग में शामिल हैं:

#include <stddef.h> 
+0

ओपी हेडर –

+0

@ एनीनेट को शामिल नहीं कर सकता है, अन्यथा वह 'न्यूल' का उपयोग नहीं कर सकता है। –

1

NULL वास्तव में कोर सी या सी का हिस्सा नहीं है ++ भाषा; यह stddef.h

में 0 होने के लिए परिभाषित किया गया है क्योंकि आप C++ का उपयोग कर रहे हैं, nullptr, जो एक कीवर्ड है, और टाइप किया गया है। (मान लीजिए कि यह उपलब्ध है। यह सी ++ 11 का हिस्सा है, इसलिए तकनीकी रूप से सभी कंपाइलर्स इसका समर्थन नहीं करेंगे; व्यावहारिक रूप से, आपको एक कंपाइलर खोजने के लिए कठोर दबाव डाला जाएगा जो नहीं करता है)

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