为什么我不能为基类的成员赋值?

时间:2012-12-17 16:34:19

标签: c++ polymorphism

我有一个类CPolygon,它派生自类CElement。 [我在这里利用多态性]。

 class CElement : public CObject
 {
 public:
virtual ~CElement();
virtual void Draw(CDC* pDC){};
CPoint vertices[11];

 protected:

CElement();

 };

 class CPolygon : public CElement
 {
 public:
CPolygon(CPoint mFirstPoint,CPoint mSecondPoint);
~CPolygon(void);
 virtual void Draw(CDC* pDC);                 


 protected:
CPoint mStartPoint;
CPoint mEndPoint;
CPolygon(void);


 };

当我尝试将数组分配给CElement对象的成员vertices时,我收到错误:expression must be a modifiable Lvalue

 CElement* a = new CPolygon(mFirstPoint,mSecondPoint);
  a->vertices=vertices;        //here!!

为什么这不起作用?

1 个答案:

答案 0 :(得分:5)

因为a->vertices不是可修改的左值...你不能用C ++分配数组,你只能分配特定的元素或做副本。

如果您知道大小为11,我会使用std::array(或std::vector,以获得灵活性)而不是C风格的数组。