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

syntax error : missing ';' before '{'

本文关键字:语法 错误      更新时间:2023-10-16

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

};

你需要这个:

Marina() : port(), bport() {}

这会用满零初始化两个数组。

在 C++11 中,您可以在声明点定义非静态成员变量,因此您可以执行以下操作:

class Marina {
public:
  char port[100] = {0};
  char bport[25] = {0};
};
Marina(){
//std::fill is in <algorithm>
std::fill (port, port + 100, 0);
std::fill (bport, bport + 25, 0);

此代码段缺少某些内容。没有结尾大括号!我用只要有支架就可以工作的东西替换了你的作业。

除此之外,您的代码仍然不会以这种方式编译,因为必须在初始值设定项列表中完成初始化:

Marina()
    : port ({0}), bport ({0}) {}

您的大括号不匹配。您的开大括号比右大括号多一个。大括号不匹配的代码格式不正确。遗憾的是,响应缺少右大括号的编译器消息并不总是最清晰的。编译器如何知道您忘记用右大括号关闭哪个左大括号?