Конструктор копирования: глубокое копирование абстрактного класса ⇐ C++
-
Anonymous
Конструктор копирования: глубокое копирование абстрактного класса
Предположим, у меня есть следующее (упрощенный случай):
класс Цвет; класс IColor { публика: виртуальный цвет getValue (const float u, const float v) const = 0; }; Цвет класса: публичный IColor { публика: плавать 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 { вернуть цвет(r, g, b) } } класс Материал { частный: IColor* _color; публика: Материал(); Материал (const Material& m); } Теперь, есть ли способ сделать глубокую копию абстрактного IColor в конструкторе копирования Material? То есть я хочу, чтобы копировались значения любого m._color (цвета, текстуры), а не только указатель на IColor.
Предположим, у меня есть следующее (упрощенный случай):
класс Цвет; класс IColor { публика: виртуальный цвет getValue (const float u, const float v) const = 0; }; Цвет класса: публичный IColor { публика: плавать 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 { вернуть цвет(r, g, b) } } класс Материал { частный: IColor* _color; публика: Материал(); Материал (const Material& m); } Теперь, есть ли способ сделать глубокую копию абстрактного IColor в конструкторе копирования Material? То есть я хочу, чтобы копировались значения любого m._color (цвета, текстуры), а не только указатель на IColor.
Мобильная версия