错误 C2536 的解决方法:无法在 Visual Studio 2013 中为数组指定显式初始化程序

Posted

技术标签:

【中文标题】错误 C2536 的解决方法:无法在 Visual Studio 2013 中为数组指定显式初始化程序【英文标题】:Workaround for error C2536: cannot specify explicit initializer for arrays in Visual Studio 2013 【发布时间】:2013-11-09 15:41:36 【问题描述】:

以下代码无法使用 Visual Studio 2013 编译,但它应该:

class A

    A() :m_array 0, 1, 2   // error C2536: 'A::A::m_array' : cannot specify explicit initializer for arrays
private:
    int m_array[3];
;

更多详情请见bug report。

有哪些可能的解决方法?

【问题讨论】:

在声明点初始化是否有效? int m_array[3]1,2,3;? std::array 有效吗? (除非编译器在 C++14 上抢先一步,否则您将需要额外的大括号)。 @juanchopanza:与 VC++ 2013 相同的错误。 声明数组为std::array<int, 3> m_array;并初始化为A() :m_array ( 0, 1, 2 ) 。好不好用? @galop1n OP 要求解决此问题。 【参考方案1】:

作为 cmets,您可以尝试这种解决方法。

class A

    A() : m_array ( 0, 1, 2 ) 
private:
    std::array<int, 3> m_array;
;

似乎 VS2013 为 std::array 构造函数制作了初始化列表,您可以在构造函数的初始化程序中对其进行初始化。你写的代码是有效的,gcc 和 clang 都支持。 VS2013缺乏。

【讨论】:

我必须在构造函数中使用一对额外的大括号才能在 VS2013 中编译。 A() : m_array ( 0, 1, 2 )

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

我无法在 Windows 上安装 pyaudio?如何解决“错误:需要 Microsoft Visual C++ 14.0。”?

解决visual studio不能发现单元测试无法运行单元测试的方法

Visual Studio提示“无法启动IIS Express Web服务器”的解决方法

Visual Studio-VS2017 无法登录微软账户解决方法

Visual Studio提示“无法启动IIS Express Web服务器”的解决方法

Visual Studio提示“无法启动IIS Express Web服务器”的解决方法