【发布时间】: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 要求解决此问题。
标签: c++ visual-studio c++11