2012-12-17 53 views
1

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

为什么不能做到这一点工作??

回答

5

因为a->vertices不是可修改的左值...您不能在C++中分配数组,只能指定特定的元素或执行副本。

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

+0

如果您需要像这样复制数组,请尝试'std :: array',它的行为与原始数组相比更像其他集合。 –

相关问题