错误:无法为数组指定显式初始化程序

8

我正在使用Visual Studios 2013,但我一直收到这个错误,却不明白为什么会出现。

class CLI{
    string commands[2] = {"create", "login"};
public:
    void addCommand(), start(), getCommand(string);
};

错误信息:

error C2536: 'CLI::CLI::commands': cannot specify explicit initializer for arrays

1
它应该可以正常工作。出于好奇,这个对你来说可行吗? - chris
2
我不会问这是什么意思:void addCommand(), start(), getCommand(string);,因为它与你的问题无关。 - WhozCraig
1
在C++11之前,你不能以这种方式初始化类成员。你需要在构造函数中完成它。 - Tobias Brandt
2
@chris:我说的是在 C++11 之前。 - Tobias Brandt
1
@TobiasBrandt,情况正在好转。他们实际上正在付出很大努力来赶上这方面的进展。我猜想VS2015将会(几乎?)完成C++14,这比他们为C++11做得要好得多。VS2014也应该有大部分内容。 - chris
显示剩余6条评论
2个回答

15

Visual Studio 2013并不完全符合C++11标准,所以像Tobias Brandt说的那样,您需要使用构造函数来初始化这些成员。

花括号初始化列表是C++11的特性。


2

我不认为VC2013实现了类成员初始化器。相反,您可以在构造函数中初始化数组。例如:

class CLI{
    string commands[2];
public:
    CLI() : commands {"create", "login"}
    {}
};

3
使用构造函数时,出现了“无法为数组指定显式初始化程序”的相同错误。 - Ethan
那就不支持了。你需要在构造函数中初始化它。例如:“CLI(){commands[0] = "create";commands[1] = "login";}" - Ricky65

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