请教:子类的复制的切割
有一虚基类CShape,派生CRectangle,CEllips与CPolygon三个子类。
而class C中有一成员为vector<shape*> m_shapes,当对C的实例进行复制时因为构造函数不能为虚,复制m_shapes时应怎样构造shape的对象而不造成切割的问题。
class CShape
{
public:
virsual move(int, int)=0;
...
}
class CRectangle:public CShape
{
public:
virsual move(int, int);
...
}
class CEllips:public CShape
{
public:
virsual move(int, int);
...
}
class CPolygon:public CShape
{
public:
virsual move(int, int);
...
}
class C
{
vector<CShape*> m_shape;
public
C(C& c);
}