1

classCPolygon から派生したクラスがあり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);


 };

verticesCElement オブジェクトのメンバーに配列を代入しようとすると、次のエラーが発生します。expression must be a modifiable Lvalue

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

なぜこれが機能しないのですか??

4

1 に答える 1

5

は変更可能な左辺値ではないためa->vertices... C++ では配列を割り当てることはできません。特定の要素を割り当てるか、コピーを実行することしかできません。

サイズが であることがわかっている場合は、C スタイルの配列の代わりに(または、柔軟性のために) を11使用します。std::arraystd::vector

于 2012-12-17T16:35:59.160 に答える