全局向量C ++

时间:2009-12-11 16:28:44

标签: c++ windows stl vector global

是否有可能将向量作为全局变量是C ++? 像这样:

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

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

6 个答案:

答案 0 :(得分:9)

是的,可以这样:

#include <vector>

class system{ ... };

std::vector<system> systems;

因此,向量全局变量是在类系统定义之后定义的。必须包含向量,不要忘记向量之前的std ::(或使用命名空间std)。

编辑: 我只是想到了什么。还有一个称为系统的功能。尝试使用其他类名。

答案 1 :(得分:7)

system()是一个c-stdlib函数,因此可能是已定义的名称,因此您无法重复使用它。

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

答案 2 :(得分:3)

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

  

test.cpp:8:错误:模板参数列表中参数1的类型/值不匹配   对于`template class std :: vector'

     

test.cpp:8:错误:期望一个类型,得到`system'

     

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

     

test.cpp:8:错误:';'之前的声明中的无效类型令牌

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

vector<class system> systems

答案 3 :(得分:1)

我打赌你在没有extern

的头文件中声明了它

答案 4 :(得分:0)

你的意思是:

#include<iostream>
#include<vector>
using namespace std;
class system{
  // class members
 };

vector<system> v;

int main()
{
   //do something
}

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

答案 5 :(得分:0)

错误通常是在windows.h中! “system”在“windows.h”中定义或包含在其中。我想这是进行系统调用的功能。