2010-12-03 15 views
6

मैं दो सदस्य चरमानचित्र शुरू करना और कक्षा सदस्य चर को सी ++ में खाली करने के लिए सेट करें?

std::map<int, Node*> a; 

और

std::set<Node*> b; 

एक शैली मेरी विश्वविद्यालय में इस्तेमाल किया चेकर सभी सदस्य चर वर्ग के निर्माता में प्रारंभ किए जाने की आवश्यकता के साथ एक सी ++ वर्ग की है। इन सदस्य चर a और b कक्षा के निर्माता के खाली में कैसे खाली हो सकते हैं?

+0

आपने "यह काम, धन्यवाद" के साथ दो उत्तरों पर टिप्पणी की है। अब आपको एक को स्वीकार करना चाहिए (समान उत्तरों के मामले में, आमतौर पर पहला)। ;) – Mephane

उत्तर

11

इस तरह:

class A 
{ 
    public : 

    A() : s(), 
     m() 
    { 
    } 


    std::set<int> s; 
    std::map< int, double > m; 
}; 
+0

यह काम करता है, धन्यवाद! –

2

इस SomeClass::SomeClass() : a(), b() {} की तरह?

+0

यह काम करता है, धन्यवाद! –

2

std::set और std::map दोनों के रूप में "उपयोगकर्ता" -declared डिफ़ॉल्ट कंस्ट्रक्टर्स वे परोक्ष प्रारंभ हो जाएगा लेकिन आप अपने वर्ग का निर्माण किया है। आपको "शैली" मार्गदर्शिका के अनुरूप कुछ भी विशेष करने की ज़रूरत नहीं है।

+0

चार्ल्स धन्यवाद। यहां समस्या यह थी कि एक स्वचालित ग्रेडिंग सिस्टम के हिस्से के रूप में शैली की जांच स्वचालित रूप से की जाती है और सभी सदस्य चर को स्पष्ट रूप से प्रारंभ करने की आवश्यकता होती है। –

+0

@Marek Miettinen: क्या आप सुनिश्चित हैं कि स्टाइल चेक न केवल पीओडी-प्रकारों पर लागू होता है? मैंने कभी स्टाइल गाइड को उन चीजों को स्पष्ट रूप से प्रारंभ करने पर जोर नहीं दिया है जिनके पास डिफॉल्ट कन्स्ट्रक्टर हैं जिनका उपयोग किसी भी मामले में अंतर्निहित प्रारंभिकरण के लिए किया जाएगा। –

+0

और यदि स्टाइल चेकर को वास्तव में इसकी आवश्यकता होती है, तो यह टूट गया है, उतना आसान है। – etarion

0

यह चेक g ++ कंपाइलर द्वारा किया जाता है, जब -वेफ ++ चेतावनी विकल्प लागू होता है। आइटम 4 देखें ("सुनिश्चित करें कि स्कॉट मेयर्स, प्रभावी सी ++ में, , अधिक जानकारी के लिए बुक करें, सदस्य प्रारंभिक सूची का उपयोग करके सभी सदस्यों को प्रारंभ करना उचित क्यों हो सकता है। मूल रूप से वह यह लगातार करने के लिए सुझाव देता है और इसे कन्स्ट्रक्टर निकायों के अंदर असाइनमेंट पर प्राथमिकता देता है।

+0

यह कैसे समझाता है कि ऐसा कैसे करें? प्रभावी सी ++ संदर्भ अच्छी शोध सामग्री है, लेकिन काफी जवाब नहीं है। – ssube

+0

@peachykeen: आप सही हैं, प्रारंभिक प्रश्न के उत्तर की तुलना में यह एक टिप्पणी है। –

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