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