इस पर विचार करें:स्पष्ट रूप से पॉइंटर्स के वेक्टर को प्रारंभ करने से रूपांतरण त्रुटि में परिणाम मिलता है?
std::vector<int*> v(1, 0);
यह (यहां तक कि अधिकतम चेतावनी स्तर में कोई चेतावनी) कुलपति ++ 10 के साथ ठीक संकलित करता है। हालांकि, यह लिनक्स पर मैक या जीसीसी पर llvm के साथ संकलित नहीं करता है, जैसे "असंगत प्रकार const int से int * को असाइन करना" जैसी त्रुटि प्रदान करना। मैं समाधान की तलाश नहीं कर रहा हूं - मुझे पता है कि दूसरा पैरामीटर अनावश्यक है या एक static_cast त्रुटि को हल करता है।
मैंने सोचा कि शून्य किसी भी सूचक प्रकार के लिए पूरी तरह से परिवर्तनीय था। क्या देता है?
int* i = 0;
int* const& ii = 0;
const int t = 0;
i = t;
मैं समझता हूँ कि वेक्टर निर्माता हस्ताक्षर एक const T&
लेता है जो जब vector<int*>
के लिए विस्तार किया int* const&
सही हो जाता है: मैं निम्नलिखित कर सकते हैं? क्या कोई यहां बता रहा है कि क्या हो रहा है, और क्या वीसी ++ या गैर-वीसी ++ कंपाइलर सही है?
'0' के बजाय' nullptr' आज़माएं। – ildjarn
क्या आप इसे C++ 03 या C++ 11 प्रोग्राम के रूप में संकलित कर रहे हैं? –
प्रश्न से संबंधित नहीं है, लेकिन, आप कच्चे पॉइंटर्स का उपयोग क्यों कर रहे हैं जब [बजेर्न ने कहा कि हमें उनसे बचना चाहिए] (http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11- अंदाज)? –