मैं अपने सी में निम्न त्रुटि हो रही है ++ कार्यक्रम:कोई उचित डिफ़ॉल्ट निर्माता उपलब्ध
static std::map<const std::string, Timezone> timezoneMap;
:
1> c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.cpp(14) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled
इस कोड की इस पंक्ति को त्रुटि ढेर लेकिन अंक में थोड़ा नीचे है
कारण यह है कि टाइमज़ोन का एक विस्तृत निर्माता है, लेकिन कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है।
c:\program files\microsoft visual studio 10.0\vc\include\map(215): error C2512: 'Timezone::Timezone' : no appropriate default constructor available
1> ग: \ Program Files \ Microsoft Visual Studio 10.0 \ vc \ \ मानचित्र (210) शामिल हैं: वर्ग टेम्पलेट सदस्य समारोह संयोजित करते समय 'समय-क्षेत्र & std :: नक्शा < यहाँ त्रुटि का वह हिस्सा है _Kty, _Ty> :: ऑपरेटर [] (कॉन्स std :: basic_string < _Elem, _Traits, _Ax> &) '
मेरा प्रश्न है, क्यों? नक्शा टाइमज़ोन ऑब्जेक्ट बनाने का प्रयास क्यों कर रहा है? अगर मैं हमेशा अपने मानचित्र में पूरी तरह से गठित वस्तुओं को रखता हूं तो इसकी आवश्यकता क्यों होनी चाहिए? विशेष रूप से, जब मैं मानचित्र को प्रारंभ करता हूं तो यह त्रुटि क्यों होती है?
+1 अच्छी चीजें। ध्यान दें कि 'std :: map' के साथ 'स्पष्ट Foo :: Foo (int)' केवल कन्स्ट्रक्टर और स्पष्ट प्रतिलिपि निर्माता के साथ, आप हमेशा 'm.insert (std :: make_pair (1, 5)) कह सकते हैं; ', लेकिन आप केवल 'm.insert (std :: make_pair (1, Foo (5)) कह सकते हैं; ~ C++ 11 में। –