我的课程如下:
#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 :(得分: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 :(得分:1)
您不能以这种方式初始化对象数组。您可以创建一个不带参数的默认构造函数,将构件初始化为默认值。或者,如果您使用的是C ++ 11,则可以使用类内成员初始化:
int var2 = 0;
int var3 = 0;