Wednesday 15 June 2011

c++ - How to create parameterized constructor of a class in another class as a data member? -



नीचे दिए गए उदाहरण में,

  वर्ग की कार {निजी: int sides; सार्वजनिक: कार () {cout & lt; & lt; "\ ndefault नामक निर्माता"; } कार (इंट nsides) {cout & lt; & lt; "\ n कलेटेड कन्स्ट्रक्टर"; पक्षों = nsides; }}; क्लास ऑटो {निजी: कार सीएच; सार्वजनिक: ऑटो (इंट ए): कार (ए) {// कार टेस्ट (5); }}; Int main () {ऑटो पर (5); वापसी 0; }   

लिंक नीचे जिक्र करने के बाद: -

मैंने ऐसा लिखने और निष्पादित करने की कोशिश की दुर्भाग्यवश मैं संकलक त्रुटि का पालन कर रहा हूं: -

  check.cpp: कन्स्ट्रक्टर में: ऑटो :: ऑटो (int) एक :? check.cpp: 44 : त्रुटि: टाइप करें "कार" ??? स्वयं का एक सीधा आधार नहीं है   

अगर दिए गए लिंक में उल्लिखित समाधान सही हैं तो मेरे कोड में क्या गलत है? मेरी अगली क्वेरी है ... क्यों केवल parametrized कन्स्ट्रक्टर () कंपाइलर फेंकता है यदि प्रारंभिक सूची का उपयोग किए बिना इसे प्रारंभ करने का प्रयास करें
यह कंपाइलर त्रुटि फेंक देगा: - <प्री> वर्ग ऑटो {निजी: कार सीएच (5); सार्वजनिक: ऑटो (इंट ए) {}};

लेकिन यह नहीं है: -

  वर्ग ऑटो {निजी: कार सीएच; सार्वजनिक: ऑटो (इंट ए) {}};   

कृपया इस व्यवहार को समझने में मेरी सहायता करें।
अग्रिम धन्यवाद

अपने उदाहरण में आप अपने कन्स्ट्रक्टर ऑटो (इंट ए) द्वारा निर्दिष्ट कर रहे हैं: कार (ए ) कि ऑटो कार से ली गई है, और इसी के बारे में कंपाइलर शिकायत करता है।

अपनी कार ऑब्जेक्ट (ऑटो के अंदर) को प्रारंभ करने के लिए, यह ऑटो (int a) करें: ch (क) । आप सदस्य के नाम के बजाय प्रकार डालते हैं।

आपके दूसरे प्रश्न के बारे में, इन-क्लास सदस्य इनिशियलाइज़ेशन सी ++ 11 द्वारा लाया गया एक नया फीचर है। आप इसे अपने कंपाइलर (जीसीसी या क्लैग के लिए पैरामीटर -std = c ++ 11 पैरामीटर जोड़कर इसका उपयोग कर सकते हैं, एमएसवीसी इसका समर्थन नहीं करता है) देख । आपके मामले में आप इसका प्रयोग कर सकते हैं क्योंकि क्रिस ने बताया:

  class auto {// ... कार सीआर {5}; Int someVal = 5; // ...};    

No comments:

Post a Comment