मेरे पास Location
नामक एक कक्षा है और मुझे इसके सदस्य चरों में एक कैरे जोड़ने की आवश्यकता है। इस परिवर्तन ने असाइनमेंट ऑपरेटर को अधिभारित करने की आवश्यकता को जन्म दिया।सी ++ ओवरलोडिंग असाइनमेंट ऑपरेटर
क्या इस वर्ग प्रकार में सभी चरों की प्रतिलिपि बनाने का कोई तरीका है जिसे मैंने बदलाव करने से पहले कॉपी किया जा रहा था और केवल प्रत्येक सदस्य चर को व्यक्तिगत रूप से कॉपी किए बिना कैरे की प्रतिलिपि बनाने के लिए अतिरिक्त कोड जोड़ दिया है?
Location& Location::operator=(const Location &rhs)
{
// Only do assignment if RHS is a different object from this.
if (this != &rhs)
{
//Copy CArray
m_LocationsToSkip.Copy(rhs.m_LocationsToSkip);
//Copy rest of member variables
//I'd prefer not to do the following
var1 = rhs.var1;
var2 = rhs.var2;
//etc
}
return *this;
}
तो तुम करने के लिए, प्रभाव में, संकलक उत्पन्न असाइनमेंट ऑपरेटर कॉल करना चाहते हैं? क्या 'कैरे' के पास असाइनमेंट ऑपरेटर है? –
इसमें एक कॉपी कन्स्ट्रक्टर है लेकिन कोई असाइनमेंट ऑपरेटर नहीं है। मुझे यकीन नहीं है कि मैं संकलक जेनरेट असाइनमेंट ऑपरेटर को कॉल कर सकता हूं क्योंकि मैंने एक कैरे सदस्य चर जोड़ा है। –
नहीं, आप संकलक को जेनरेट नहीं कर सकते हैं क्योंकि जब आप एक प्रदान करते हैं तो यह उत्पन्न नहीं होता है (नहीं क्योंकि आपने एक कैरे सदस्य जोड़ा है; केवल एक चीज जो बदलती है वह है कि आपकी कक्षा के लिए जेनरेट किया गया कंपाइलर कॉल नहीं कर सकता एक कैरे के लिए क्योंकि यह अस्तित्व में नहीं है)। मुझे डर है कि ऐसा करने का कोई तरीका नहीं है। –