假設我有以下的(簡單情況):拷貝構造函數:深複製一個抽象類
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(一種顏色,一種紋理)的值,而不僅僅是指向IColor的指針。
爲什麼在IColor上存儲指針會禁用深度複製? – 2009-09-28 14:25:53
因爲默認情況下,它只會將指針地址複製到複製的指針地址中。它不會複製正在指向的內容,然後重新調整指針。 Luke在製作從複製構造函數調用的clone()函數時有最好的建議。 – 2009-09-28 14:35:38