在Visual Studio 2012中初始化向量的静态const向量

时间:2014-11-24 08:08:57

标签: c++ visual-studio-2012 vector

我正在尝试在Visual Studio 2012中创建一个静态const向量的int向量(这是一个更好的方法),我无法弄清楚正确的语法初始化它。我相信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

如何正确初始化?我可以使用更合适的数据类型吗?我只是希望我的静态类有一个常量向量的int,这样我就可以快速读取但不能修改值。

1 个答案:

答案 0 :(得分:0)

在C ++中,你不能拥有std :: vector&lt; const 任何&gt;,请参阅例如here。元素必须是可分配的。

在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---------^