【发布时间】:2015-10-24 15:45:23
【问题描述】:
我正在学习 C++,但遇到了问题。我在类头文件中有这个声明:
double bgal[3][3] =
{ { -0.066988739415,-0.872755765852,-0.483538914632 },
{ 0.492728466075,-0.450346958020, 0.744584633283 },
{ -0.867600811151,-0.188374601723, 0.460199784784 } };
使用 Visual Studio 2015 可以正常编译,但使用 Visual Studio 2013 则无法编译。我收到这条消息:
cannot specify explicit initializer for arrays
我认为问题与 Visual Studio 2013 不支持 C++11 和编译器错误 C2536 有关。
我试图在类构造函数中移动该初始化,但它不起作用。这个:
MyClass::MyClass() : bgal { { -0.066988739415, -0.872755765852, -0.483538914632 },
{ 0.492728466075, -0.450346958020, 0.744584633283 },
{ -0.867600811151, -0.188374601723, 0.460199784784 } }
但它不起作用。
有什么建议吗?也许我不能使这个向量保持不变或静态,或者......
我尝试过bgal[0][0] = { ...}; bgal[0][1] = { ...};,但工作量很大。
这不是问题Error: cannot specify explicit initializer for array 的重复,因为该问题询问的是一维数组,并且它提供了一个解决方案来使用bgal[0][0] = { ...}; bgal[0][1] = { ...}; 初始化数组,这需要大量工作。我问是否有另一种方法可以更快地做到这一点。
在寻找可能的重复问题之前,请仔细阅读问题。
【问题讨论】:
-
您是否必须为 VS2013 显式设置编译器设置才能启用 C++11?
-
@BartoszPrzybylski 请阅读我的更新。我在问我之前发现了这个问题,它的解决方案就在我的问题上,我在问是否还有其他解决方案。
-
@MrLister 我将在虚幻引擎中使用这个库,我不确定是否可以启用 C++ 11。我会检查一下。正如微软所说,我不需要做任何特别的事情来在 Visual Studio 2013 中启用 C++ 11 功能,因此它不支持显式数组初始化。
-
@VansFannel 还有这个问题:stackoverflow.com/questions/19877757/… 似乎指出这是一个VS bug O_o
-
@BartoszPrzybylski std::array 是否等同于双 bgal[3][3] 数组?
标签: c++ arrays c++11 visual-studio-2013