错误:无法为数组指定显式初始化程序
Posted
技术标签:
【中文标题】错误:无法为数组指定显式初始化程序【英文标题】:Error: cannot specify explicit initializer for array 【发布时间】:2014-05-27 22:50:33 【问题描述】:我正在使用 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
【问题讨论】:
它should work fine。出于好奇,this one 对您有用吗? 我不会问这应该是什么:void addCommand(), start(), getCommand(string);
,因为它与您的问题无关。
在 C++11 之前不能用这种方式初始化类成员。您需要在构造函数中执行此操作。
@chris: 我说的是之前 C++11。
@TobiasBrandt,越来越好。他们实际上正在努力在这方面赶上。我猜 VS2015 将(几乎?)用 C++14 完成,这至少比他们为 C++11 所做的要好得多。 VS2014 应该也有大部分。
【参考方案1】:
Visual Studio 2013 并不完全符合 C++11,因此,就像 Tobias Brandt 所说,您需要使用构造函数来初始化这些成员。
带括号的初始化列表是 C++11 的一项功能。
【讨论】:
【参考方案2】:我不认为在 VC2013 中实现了类内成员初始化程序。相反,在构造函数中初始化数组。例如:
class CLI
string commands[2];
public:
CLI() : commands "create", "login"
;
【讨论】:
在使用构造函数时遇到同样的错误,涉及“无法为数组指定显式初始化程序” 当时不支持。然后,您必须在构造函数中对其进行初始化。例如 "CLI()commands[0] = "create";commands[1] = "login";"以上是关于错误:无法为数组指定显式初始化程序的主要内容,如果未能解决你的问题,请参考以下文章
C 语言数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )
使用显式定义的默认构造函数将 unique_ptr 的类内成员初始化程序设置为 nullptr 错误
在 VS2013 中使用指定的初始化程序来初始化结构中的 2D 字符数组初始化程序会发出错误 C2078