我需要初始化一个作为类成员的静态常量向量。
我尝试过:
static const vector<string> vr ({"2", "3", "4"});
static const vector<string> vr = {"2", "3", "4"};
static const vector<string> vr {"2", "3", "4"};
然而,这些方法都没有奏效。
我正在使用带有mingw的Eclipse。(我已启用c++11)
我需要初始化一个作为类成员的静态常量向量。
我尝试过:
static const vector<string> vr ({"2", "3", "4"});
static const vector<string> vr = {"2", "3", "4"};
static const vector<string> vr {"2", "3", "4"};
然而,这些方法都没有奏效。
我正在使用带有mingw的Eclipse。(我已启用c++11)
静态变量的初始化是在类外部进行的,像这样:
class Example
{
static const vector<string> vr;
// ...
};
const vector<string> Example :: vr ({"hello", "world"});
const
向量? - phoenix在类定义中声明静态成员,但在外部定义它们。
class MyClass {
public:
// declaration
static const std::vector<std::string> vec;
};
// definition
const std::vector<std::string> MyClass::vec = ...;
唯一的例外是整型类型。
class MyClass {
public:
// declaration and definition
static const int MAX_BURRITOS = 5;
};
虽然您的问题仅限于C++11,但我将在此提供这一信息以供未来的访客在搜索结果中找到。
如果您能够转向C++17,则可以使用const static inline
在类声明内初始化静态成员,无需再将其放在类外。
像这样:
#include <iostream>
#include <string>
#include <vector>
class Test {
public:
const static inline std::vector<std::string> Names = { "Fred", "Barney", "Wilma" };
};
int main() {
std::cout << Test::Names[0];
return 0;
}