1. 程式人生 > >C++初始化列表問題,類中有一個物件型別的陣列成員變數,在初始化列表中初始化時報錯“[]”操作符語法錯誤

C++初始化列表問題,類中有一個物件型別的陣列成員變數,在初始化列表中初始化時報錯“[]”操作符語法錯誤

陣列作為成員變數時只有預設初始化,也就是無法傳遞引數。有兩種變通方案:你可以把物件陣列改成指標陣列,或者把ClassB類的構造和初始化分開。
方案一:
class ClassA{
private:
      ClassB* arrayOfObjectClassB[2];
public:
      ClassA(int i){
            arrayObjectOfClassB[0]=new ClassB(i);
            arrayObjectOfClassB[1]=new ClassB(i);
      }
};
方案二:
class ClassB{
private:
      int data;
public:
      ClassB(int d):data(d){ }
      ClassB(){ }
      void Init(int d){data=d;}
};
class ClassA{
private:
      ClassB arrayOfObjectClassB[2];
public:
      ClassA(int i){
            arrayObjectOfClassB[0].Init(i);
            arrayObjectOfClassB[1].Init(i);
      }
};