Ale*_* R. 5 c++ vector visual-studio-2012
我试图在Visual Studio 2012中创建一个int向量的静态const向量(这是一个更好的方法),我无法弄清楚用它来初始化它的正确语法.我相信2012年使用的C++版本不允许使用初始化程序,但我不知道如何完成我想要的工作.
我在2013年尝试了以下内容,似乎编译好了:
.H:
static const std::vector<const std::vector<int>> PartLibrary;
Run Code Online (Sandbox Code Playgroud)
的.cpp:
const std::vector<const std::vector<int>> Parts::PartLibrary {
std::vector<int> { 29434 }, // 1
std::vector<int> { 26322 }, // 2
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在2012年尝试相同时,它会出错:
Error 1 error C2470: 'PartLibrary' : looks like a function definition,
but there is no parameter list; skipping apparent body
Run Code Online (Sandbox Code Playgroud)
我该如何正确初始化这个?我可以使用更合适的数据类型吗?我只是希望我的静态类有一个常量向量的int,所以我可以快速读取,但不能修改值.
在 C++ 中,您不能使用 std::vector< const everything>,请参见此处的示例。元素必须是可分配的。
在C++98中,您可以尝试以下初始化方案。它的缺点是将向量从数组复制到向量:
const std::vector<int> vectors[2] = {
std::vector<int> (1, 29434), // vector of one element
std::vector<int> (1, 26322), // vector of one element
};
const std::vector<std::vector<int> > /*Parts::*/PartLibrary (vectors+0, vectors+2);
// space needed for C++98---------^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |