是否有可能将向量作为全局变量是C ++? 像这样:
class system {...};
vector<system> systems;
当我尝试编译时,我收到一个错误。我正在使用的编译器是gcc,我正在编译为C ++。
答案 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”中定义或包含在其中。我想这是进行系统调用的功能。