全局vectorC ++

是否有可能有一个向量作为一个全局variables是C ++? 喜欢这个:

class system {...}; vector<system> systems; 

当我尝试编译这个时,我得到一个错误。 我使用的编译器是gcc,我正在编译为C ++。

是的,可以这样做:

 #include <vector> class system{ ... }; std::vector<system> systems; 

所以vector类的全局变量是在类系统的定义之后定义的。 必须包含向量,不要忘记std :: vector(或使用namespace std)之前。

编辑:我只是想到了一些事情。 还有一个叫做系统的功能。 尝试一个不同的类名称。

system()是一个c-stdlib函数,因此可能是一个已经定义好的名字,所以你不能重复使用它。

将它重命名为其他(System?),并在下次发布完整的错误消息,PLZ。

当我在Cygwin下用g ++ 3.4.4编译你的代码时,我得到以下错误:

test.cpp:8:error:模板参数列表中的参数1处的类型/值不匹配“template class std :: vector'

test.cpp:8:错误:预计一个类型,得到`系统'

test.cpp:8:错误:模板参数2无效

test.cpp:8:错误:在';'之前的声明中的无效类型 代币

问题是你的类名称系统,要么改变类的名称或使用:

vector<class system> systems

我敢打赌你没有extern的头文件

你的意思是:

 #include<iostream> #include<vector> using namespace std; class system{ // class members }; vector<system> v; int main() { //do something } 

它在我的g ++编译器中工作正常。 我不认为全局定义矢量变量应该有什么问题,但不建议。

错误是,经常在windows.h中! “系统”在“windows.h”中定义或包含在其中。 我想这是一个系统调用的功能。