में असाइन करने योग्य ऑब्जेक्ट्स का उपयोग करें, मैं std::vector
में ऑब्जेक्ट्स की एक सूची स्टोर करना चाहता हूं, लेकिन ऑब्जेक्ट्स में एक संदर्भ होता है और इसे असाइन नहीं किया जा सकता है। हालांकि, मैं ऑब्जेक्ट की प्रतिलिपि बना सकता हूं।सी ++ वेक्टर
एकमात्र विकल्प मैं सोच सकता हूं कि ऑब्जेक्ट्स को लपेटने के लिए पॉइंटर्स का उपयोग करना और पॉइंटर्स को फिर से निर्दिष्ट करने के लिए संशोधित करना है, लेकिन इसके लिए सिंटैक्स पठनीयता को कम कर देगा, खासकर जब इटरेटर का उपयोग करते हैं, और मैं एक पसंद करूंगा वैकल्पिक।
काम नहीं करता:
std::vector<MyObject> myVector;
//fill the vector
//...
myVector[1] = object1;
स्मार्ट संकेत दिए गए बलिदान पठनीयता:
std::vector<std::unique_ptr<MyObject>> ptrVector;
//fill the vector
//...
ptrVector[1] = std::unique_ptr<MyObject>(new MyObject(object1));
वहाँ किसी भी अन्य तरीकों एक std::vector
में unassignable वस्तुओं का उपयोग करने के हैं?
सी ++ 11 हैं मान लिया जाये कि, का उपयोग करते हुए 'std :: पारंपरिक संदर्भों के बजाय reference_wrapper' होना एक समाधान? – jogojapan
मुझे नहीं लगता कि आपको कोड की अंतिम पंक्ति में 'std :: move' की आवश्यकता है, क्योंकि' std :: unique_ptr (...) 'एक रावल्यू है। –
@ डेविडरोद्रिगुएज़-ड्राईबीस ओह हाँ, इस सवाल में तय किया गया है। –