我想在类中初始化一个向量Stack
,如下所示。
该矢量将仅初始化一次,并且不会更新。
#ifndef X_HPP
#define X_HPP
#include <vector>
class Test
{
public:
void gen(double x);
void PopStack();
private:
static std::vector<double> Stack;
};
#endif
CPP
文件如下:
#include "X.hpp"
int main() {
std::vector<double> Test::Stack = {1,2,3};
//{1,2,3} is for representation. In the code, it is generated on the fly and is not a constant seq.
Test t;
}
使用以下命令编译:
g++ -std=c++11 Y.cpp
报告错误:
Y.cpp: In function ‘int main()’:
Y.cpp:4:37: error: qualified-id in declaration before ‘=’ token
std::vector<double> Test::Stack = {1,2,3};
答案 0 :(得分:1)
基本上,你应该移动这条线:
std::vector<double> Test::Stack = {1,2,3};
主函数中的
:
std::vector<double> Test::Stack = {1,2,3};
int main() {
// ...
return 0;
}
如果动态填充向量,则可以将其更改为:
std::vector<double> Test::Stack;
int main() {
// ...
return 0;
}
并以某种方式在运行时填充 Stack 。
答案 1 :(得分:1)
你无法在函数体内初始化静态成员变量(main
,在你的情况下)
通常,你将这种代码放在一个和一个cpp文件中,在任何方法的主体之外。 像这样的东西:
std::vector<double> Test::Stack = {1,2,3};
int main() {
//{1,2,3} is for representation. In the code, it is generated on the fly and is not a constant seq.
Test t;
}