2012-12-17 50 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',它的行爲與原始數組相比更像其他集合。 –

相關問題