2014-10-30 42 views
0

我有一個類,看起來如下:如何在構造函數初始化時初始化一個對象的數組? C++

#include <string> 
using std::string; 

class cOb 
{ 
private: 
    string var1; 
    int var2; 
    int var3; 

public: 
    cOb(string v1, int v2, int v3); 
}; 

cOb::cOb(string v1, int v2, int v3) 
{ 
    var1 = v1; 
    var2 = v2; 
    var3 = v3; 
} 

int main() 
{ 
    string x = "Somethin"; 
    int y = 0, z = 10; 
    cOb object1(x,y,z); 
} 

,但如果我嘗試創建該類的對象作爲數組:

cOb aObjects[10]("" ,0 ,0); 

編譯器會抱怨,給我這個錯誤:

error: bad array initializer 

如何創建一個默認值,所以我不必每次初始化對象或我怎麼初始化這個數組中的正確方法是什麼?

+0

我正試圖簡要介紹> _> – IzonFreak 2014-10-30 21:35:28

回答

2

你可以寫:

cOb Objects[10] = { cOb("x", 0, 0), cOb("y", 1, 1), /* etc. */ }; 

這是不可能指定一個默認這是用來初始化所有的對象。要做到這一點,你必須給默認的構造函數cOb。要做到這一點,最簡單的辦法是給默認值的參數爲現有的構造函數:

cOb (string v1 = "", int v2 = 0, int v3 = 0); 

但是如果你使用std::vector爲你的容器,而不是C數組,你可以傳遞一個默認:

std::vector<cOb> Objects(10, cOb("x", 0, 0)); 
1

你不能以這種方式初始化一個對象數組。您可以創建一個沒有參數的默認構造函數,它將成員初始化爲默認值。或者,如果您正在使用C++ 11,你可以使用類成員初始化:

int var2 = 0; 
int var3 = 0;