我有一个类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!!
为什么这不起作用?
答案 0 :(得分:5)
因为a->vertices
不是可修改的左值...你不能用C ++分配数组,你只能分配特定的元素或做副本。
如果您知道大小为11
,我会使用std::array
(或std::vector
,以获得灵活性)而不是C风格的数组。