C++ Training > 課題02

以下のコードは、実行時にエラーが発生する。その原因を追求し、修正しなさい。

以下のコードは、int型のデータを動的に格納するためのクラスである。

class CIntArray
{
public:
  CIntArray() { pData = 0; }
  CIntArray(int iSize) { pData = new int [iSize]; }
  virtual ~CIntArray() { delete [] pData; }

  void Set(int iIndex, int iData)
  {
    pData[iIndex] = iData;
  }

private:
  int* pData;
};

int main()
{
  CIntArray array1(10), array2;

  array1.Set(0, 10);
  array1.Set(5, 100);

  // array1の内容をarray2に代入
  array2 = array1;

  return 0;
}

(参考)以下のようにして、コンストラクタとデストラクタがどのようにコールされるか しらべると良い。
class CHuman : public CMammal
{
  public:
   CHuman() { cout << "Constructor: CHuman" << endl; }
   virtual ~CHuman() { cout << "Destructor: CHuman" << endl; }
    ....
};

class CMammal
{
  public:
    CMammal() { cout << "Constructor: CMammal" << endl; }
    virtual ~CMammal() { cout << "Destructor: CMammal" << endl; }
}

Hiroki Wakabayashi, Computer Vision Laboratory.