0

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



};
4

3 回答 3

4

你需要这个:

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

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

在 C++11 中,您可以在声明时定义非静态成员变量,因此您可以这样做:

class Marina {
public:
  char port[100] = {0};
  char bport[25] = {0};
};
于 2012-04-29T12:21:37.640 回答
1
Marina(){
//std::fill is in <algorithm>
std::fill (port, port + 100, 0);
std::fill (bport, bport + 25, 0);

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

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

Marina()
    : port ({0}), bport ({0}) {}
于 2012-04-29T12:17:20.853 回答
0

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

于 2012-04-29T12:28:35.203 回答