3

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

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

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

4

6 回答 6

9

是的,可以这样:

#include <vector>

class system{ ... };

std::vector<system> systems;

所以vector global var是在类系统定义之后定义的。必须包含向量,并且不要忘记向量之前的 std::(或使用命名空间 std)。

编辑:我只是想到了一些东西。还有一个函数叫做system。尝试不同的类名。

于 2009-12-11T16:32:11.860 回答
7

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

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

于 2009-12-11T16:43:51.533 回答
3

当我在 Cygwin 下使用 g++ 3.4.4 编译您的代码时,出现以下错误:

test.cpp:8:错误:“模板类 std::vector”的模板参数列表中参数 1 的类型/值不匹配

test.cpp:8:错误:需要一个类型,得到“系统”

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

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

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

vector<class system> systems

于 2009-12-11T16:32:11.070 回答
1

我敢打赌你在头文件中声明它没有extern

于 2009-12-11T16:40:44.620 回答
0

你是这个意思吗:

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

vector<system> v;

int main()
{
   //do something
}

它在我的 g++ 编译器中运行良好。我认为全局定义向量变量应该没有问题,但不建议这样做。

于 2009-12-11T16:33:19.223 回答
0

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

于 2009-12-11T17:12:02.923 回答