语法错误:缺少';'在'{'之前

时间:2012-04-29 12:15:32

标签: c++

我编写了一个带有两个属性(数组)的简单类。 我试图将所有数组元素初始化为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};



};

3 个答案:

答案 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)

你的牙套不匹配。你有一个比支撑更多的开放式支架。括号不匹配的代码格式不正确。不幸的是,响应缺少的大括号的编译器消息并不总是最清楚的。编译器如何知道你用闭括号忘记关闭哪个开放式支撑?