是否有可能有一个向量作为一个全局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”中定义或包含在其中。 我想这是一个系统调用的功能。