5
मुझे एक समस्या है जहां मैं किसी ऑब्जेक्ट की प्रतिलिपि बनाना चाहता हूं, लेकिन इसे स्लाइसिंग से बचाना चाहता हूं।ऑब्जेक्ट स्लाइसिंग से बचें C++
DerivedObj derivedObj;
myFunc(derivedObj);
void myFunc(MyObj &obj)
{
MyObj *saveForLater = new MyObj(obj); // slices my object
// ... //
}
क्या इसके आसपास जाने का कोई तरीका है? मुझे एक प्रतिलिपि बनाने की आवश्यकता है क्योंकि मूल वस्तु को आवश्यक होने से पहले गुंजाइश छोड़ दी जाएगी।
@clcto इससे कोई फर्क नहीं पड़ता? –
@clcto एक संदर्भ बनाम एक पॉइंटर में पास करना कोई मुद्दा नहीं है। पॉइंटर्स * और * संदर्भ कटा हुआ नहीं है। पॉइंटर्स और संदर्भों पर विचार करें "गैर-स्केलेबल"। 'नई' कॉल के साथ कथन पर टुकड़ा होता है। –
जहां तक मुझे पता है, आपके पास दो मुख्य विकल्प हैं, 'क्लोन()' नामक वर्चुअल विधि है या 'myjunc()' के कुछ प्रकार के स्वामित्व को 'my_unr() 'में उपयोग करने में सक्षम हो, शायद' shared_ptr का उपयोग करके '। –