Wednesday 15 July 2015

c++ - foward declaring class in namespace throwing compiler error -


  नामस्थान chk {class Car; कार एबीसी () {वापसी कार (); } क्लास कार {निजी: इंट पार्ट्स; सार्वजनिक: कार () {std :: cout & lt; & lt; "\ ndefault नामक निर्माता"; } कार (इंट nsides) {std :: cout & lt; & lt; "\ n कलेटेड कन्स्ट्रक्टर"; पक्षों = nsides; } ~ कार () {std :: cout & lt; & lt; "\ n ऑब्जेक्ट को हटाना"; }}; / * कार एबीसी () {वापसी कार (); } * /}   

मुझे ऊपर कोड के लिए त्रुटि मिल रही है: -

  check.cpp: फ़ंक्शन में: chk :: कार Chk :: abc () एक ????: check.cpp: 25: त्रुटि: वापसी प्रकार â ???? struct chk :: Carâ ???? अधूरा जांच है। सीपीपी: 27: त्रुटि: अधूरे प्रकार के अमान्य उपयोग को एक प्रकार का स्टैक :: कार Check.cpp: 24: गलती: आगे की घोषणा के बारे में: struct chk :: Carâ ????   


अब जब नीचे एबीसी () और एबीसी () के ऊपर टिप्पणी को कम करते हैं तो यह ठीक काम करता है। क्यों सी + + मुझे नाम स्थान के अंदर कक्षा घोषित करने की अनुमति नहीं दे रहा है?

क्यों c ++ अनुमति नहीं दे रहा है मुझे नाम के अंदर कक्षा घोषित करने के लिए अग्रेषित करना है?

क्या सी ++ की अनुमति नहीं है जैसे कि

  कार एबीसी () {वापसी कार () ; }   

बिना वर्ग कार की परिभाषा इसकी आवश्यकता है क्योंकि क) एक कार ऑब्जेक्ट के आकार की आवश्यकता है, और बी) क्लास के डिफॉल्ट कन्स्ट्रक्टर को कॉल है। कक्षा परिभाषा के बिना, यह जानने का कोई तरीका नहीं है कि निर्माता मौजूद है या नहीं।

No comments:

Post a Comment