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

有哪些可能的解决方法?

最佳答案

作为注释,您可以尝试此解决方法。

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

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

关于c++ - 错误C2536的解决方法: cannot specify explicit initializer for arrays in Visual Studio 2013,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19877757/

10-11 00:32