C++错误:在“{”标记之前不允许使用括号包围的初始化程序

3

简单问题:

我正在尝试在C++类声明中初始化数组:

using namespace std;
#include <string>
class myClass{
public:
  string myArray[] = {"a","b","c"};
};

我遇到了一个错误:

错误:在“{”标记之前,不允许使用大括号包含的初始化器。


1
你是否在使用C++11? - NathanOliver
你的逗号拼错了。 - Kerrek SB
在C++11之前,你不能通过值初始化以外的方式来初始化成员数组。 - Kerrek SB
2个回答

3

不,如果没有编译过的C++11编译器,你就无法在声明中初始化成员数组。你必须在构造函数中初始化数组成员。如果知道要初始化的元素数量,请不要使用开放数组。


-1
真正的问题在于,非静态数组数据成员不能在没有边界的情况下声明。在块作用域或命名空间作用域中,初始化程序将用于推断大小,但在类作用域中不是这样。所以只需将其更改为:
string myArray[3] = {"a","b","c"};

这样就可以了。


我尝试过指定大小或声明静态,但仍然出现相同的错误。我没有使用C++11。 - user1701545
1
如果你不使用C++11,那么你就没那么幸运了。而且你不知道这个成员变量是否应该是静态的也令人担忧。 - Brian Bi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接