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

Kor*_*idu 9 c++ visual-studio c++11

以下代码无法使用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];
};
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅错误报告

有哪些可行的解决方法?

mas*_*oud 11

作为评论,您可以尝试此解决方法.

class A
{
    A() : m_array ({ 0, 1, 2 }) {}
private:
    std::array<int, 3> m_array;
};
Run Code Online (Sandbox Code Playgroud)

似乎VS2013 std::array很好地为构造函数创建了初始化列表,你可以在构造函数的初始化器中初始化它.您编写的代码有效,gcc和clang都支持它.VS2013缺乏.

  • 我必须在构造函数中使用额外的一对大括号,以便在VS2013中进行编译.A():m_array({{0,1,2}}) (4认同)