9

以下代码不能与 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];
};

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

有哪些可能的解决方法?

4

1 回答 1

11

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

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

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

于 2013-11-10T13:24:39.837 回答