是否可以将向量作为全局变量是C++?像这样:
class system {...};
vector<system> systems;
当我尝试编译它时,我得到一个错误。我正在使用的编译器是 gcc,我正在编译为 C++。
是的,可以这样:
#include <vector>
class system{ ... };
std::vector<system> systems;
所以vector global var是在类系统定义之后定义的。必须包含向量,并且不要忘记向量之前的 std::(或使用命名空间 std)。
编辑:我只是想到了一些东西。还有一个函数叫做system。尝试不同的类名。
system()
是一个 c-stdlib 函数,因此可能是一个已经定义的名称,所以你不能重用它。
将其重命名为其他名称(系统?)并在下次发布完整的错误消息,请。
当我在 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
我敢打赌你在头文件中声明它没有extern
你是这个意思吗:
#include<iostream>
#include<vector>
using namespace std;
class system{
// class members
};
vector<system> v;
int main()
{
//do something
}
它在我的 g++ 编译器中运行良好。我认为全局定义向量变量应该没有问题,但不建议这样做。
错误通常在 windows.h 中!“系统”在“windows.h”或其中包含的内容中定义。我想这是进行系统调用的功能。