如何在构造函数初始化时初始化一个对象的数组? C++

问题描述:

我有一个类,看起来如下:如何在构造函数初始化时初始化一个对象的数组? 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

你可以写:

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)); 

你不能以这种方式初始化一个对象数组。您可以创建一个没有参数的默认构造函数,它将成员初始化为默认值。或者,如果您正在使用C++ 11,你可以使用类成员初始化:

int var2 = 0; 
int var3 = 0;