C++初始化列表問題
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
class ClassA{
private ClassB arrayOfObjectClassB[2];
public ClassA(int i):arrayObjectOfClassB[0](i),arrayObjectOfClassB[1](i)
}
arrayObjectOfClassB[0](i)這兒有問題
初始化列表中,只能初始化 單個變量 或 類的對象,不能初始化數組
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成數組作為成員變量時只有默認初始化,也就是無法傳遞參數。有兩種變通方案:你可以把對象數組改成指針數組,或者把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);
}
};