我有一个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!!

为什么不起作用?

最佳答案

由于a->vertices不是可修改的左值,因此您无法在C++中分配数组,因此只能分配特定元素或进行复制。

如果您知道大小为11,那么我将使用std::array(或std::vector,出于灵活性)而不是C样式的数组。

关于c++ - 为什么不能为基类的成员分配值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13918099/

10-12 18:37