我有一个头文件定义一些参数.我已经将一些参数定义为extern.我的程序适用于其他数据类型,如double和int,除非我尝试添加矢量变量.头文件中的声明是
extern std::vector<double> my_vec;
Run Code Online (Sandbox Code Playgroud)
在我的主文件中,我使用以下代码构建向量:
std::vector<double> my_vec(3,0);
Run Code Online (Sandbox Code Playgroud)
当我尝试使用clear方法清除向量时,编译器会给出一个错误说明未知类型.我甚至不确定如何调试这个.有人可以帮忙吗?
PS我原本试图使用以下方法为此向量分配一些值:
my_vec[0] = 1;
Run Code Online (Sandbox Code Playgroud)
但是编译器说C++需要所有声明的类型说明符.我用Google搜索了这个错误,但我不明白,因为我指定了my_vec的类型.
编辑:示例:
main.cpp
#include "params.h"
#include <vector>
std::vector<double> my_vec(3,0);
my_vec.clear();
// edit: my_vec[0] = 1; this also produces an error
int main(){
return 0;
}
params.h
#include <vector>
extern std::vector<double> my_vec;
Run Code Online (Sandbox Code Playgroud)
错误信息:
main.cpp:6:1: error: unknown type name 'my_vec'
my_vec.clear();
^
main.cpp:6:7: error: cannot use dot operator on a type
my_vec.clear();
^
2 errors generated.
Run Code Online (Sandbox Code Playgroud)