【发布时间】:2015-01-21 21:35:57
【问题描述】:
我正在尝试在 Visual Studio 2012 中创建一个 int 的 const 向量的静态 const 向量(必须有更好的方法),但我无法找出正确的语法初始化它。我相信 2012 使用的 C++ 版本不允许使用初始化程序,但我不知道如何完成我想要的。
我在 2013 年尝试过以下方法,似乎可以编译:
.h:
static const std::vector<const std::vector<int>> PartLibrary;
.cpp:
const std::vector<const std::vector<int>> Parts::PartLibrary {
std::vector<int> { 29434 }, // 1
std::vector<int> { 26322 }, // 2
...
}
但是,当我在 2012 年尝试相同时,它会出错:
Error 1 error C2470: 'PartLibrary' : looks like a function definition,
but there is no parameter list; skipping apparent body
如何正确初始化它?我可以使用更合适的数据类型吗?我只是希望我的静态类有一个整数向量的常量向量,这样我就可以快速读取但不能修改值。
【问题讨论】:
-
你编译时是否打开了 c++11 标准选项?
-
Visual Studio 2012 不完全支持 C++11。使用更新的版本。或者使用 boost assign 进行静态初始化。
-
@πάνταῥεῖ 我不知道该怎么做,但快速谷歌搜索告诉我它默认启用,但初始化列表未添加到 2012
-
@tillaert 不幸的是我必须在 2012 年做。但是,我想知道是否可以将编译器更新为支持初始化列表的版本
-
内心的
const不是完全没用吗?您不能修改最顶层的容器,因此不能修改内部容器的任何元素。
标签: c++ visual-studio-2012 vector