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

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";"

以上是关于错误:无法为数组指定显式初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

Java数组与内存控制

C 语言数组 ( 数组本质 | 数组长度定义 | 数组初始化 | 编译时初始化 | 显式初始化 - 重置内存 )

使用显式定义的默认构造函数将 unique_ptr 的类内成员初始化程序设置为 nullptr 错误

在 VS2013 中使用指定的初始化程序来初始化结构中的 2D 字符数组初始化程序会发出错误 C2078

CoreData:错误:无法在 NSManagedObject 类“视频”上调用指定的初始化程序

CoreData:错误:无法在 NSManagedObject 类上调用指定的初始化程序