मान लीजिए मैं है निम्नलिखित (सरलीकृत मामले):कॉपी निर्माता: गहरी एक अमूर्त वर्ग को कॉपी
class Color;
class IColor
{
public:
virtual Color getValue(const float u, const float v) const = 0;
};
class Color : public IColor
{
public:
float r,g,b;
Color(float ar, float ag, float ab) : r(ar), g(ag), b(ab) {}
Color getValue(const float u, const float v) const
{
return Color(r, g, b)
}
}
class Material
{
private:
IColor* _color;
public:
Material();
Material(const Material& m);
}
अब, वहाँ मुझे की प्रतिलिपि निर्माता में सार IColor की गहरी प्रतिलिपि करने के लिए किसी भी तरह से है सामग्री? यही है, मैं चाहता हूं कि जो कुछ भी m._color हो, (रंग, एक बनावट) की प्रतिलिपि बनाई जा सके, न केवल आईसीओलर के सूचक।
आईसीओलर पर एक पॉइंटर संग्रहीत करने से गहरी प्रतिलिपि अक्षम हो जाएगी? –
डिफ़ॉल्ट रूप से यह केवल सूचक पते को कॉपी किए गए सूचक पते में कॉपी करेगा। यह उस प्रतिलिपि की प्रतिलिपि नहीं करेगा जो इंगित किया जा रहा है और फिर सूचक को फिर से समायोजित करें। कॉपी कन्स्ट्रक्टर से बुलाया क्लोन() फ़ंक्शन बनाने में ल्यूक का सबसे अच्छा सुझाव है। –