我编写了一个带有两个属性(数组)的简单类。 我试图将所有数组元素初始化为0或NULL,但编译器(vc ++ 2010)会给我带来错误。
class Marina{
public:
char port[100];
char bport[25];
Marina(){
this->port = {0};
this->bport = {0};
}
};
我也试过这样一个简单的陈述:
class Marina(){
public:
char port[100] = {0};
char port[25] = {0};
};
答案 0 :(得分:4)
你需要这个:
Marina() : port(), bport() {}
这会使两个数组初始化为零。
在C ++ 11中,您可以在声明点定义非静态成员变量,因此您可以这样做:
class Marina {
public:
char port[100] = {0};
char bport[25] = {0};
};
答案 1 :(得分:1)
Marina(){
//std::fill is in <algorithm>
std::fill (port, port + 100, 0);
std::fill (bport, bport + 25, 0);
此代码段缺少某些内容。没有结束括号!只要大括号在那里,我就会用你的作业替换你的作业。
除此之外,您的代码仍然无法编译,因为必须在初始化列表中进行初始化:
Marina()
: port ({0}), bport ({0}) {}
答案 2 :(得分:0)
你的牙套不匹配。你有一个比支撑更多的开放式支架。括号不匹配的代码格式不正确。不幸的是,响应缺少的大括号的编译器消息并不总是最清楚的。编译器如何知道你用闭括号忘记关闭哪个开放式支撑?