我有一个main.cpp和一些类,每个类都在两个文件中定义:头文件和.cpp文件。 在main.cpp中我有一个2d向量。我想在类的成员函数中使用此向量。我首先尝试包含主文件,但我收到了重新定义错误。之后,我试图在另一个.h文件中定义矢量。但那也不起作用。 那么我应该怎么做才能在定义某些类时使用这个向量,这样就可以保存成员函数所做的更改。
不幸的是,这个载体是全球性的!
有关更多信息,此向量是游戏的板。这个游戏有一些对象:怪物,人类,宝藏和一些陷阱。 电路板在主要功能之前定义为全局。 main.cpp中有一些使用这个板的函数,以及我上面提到的3行的类,在它们的成员函数中使用这个板。
是使用'extern'的解决方案吗?(我不知道它是什么,我只是在答案中看到它! - 如果它是解决方案,我应该搜索它。)
答案 0 :(得分:0)
您可以这样写:
的 A.H 强>
extern vector< vector<int> > vec2D; //declare the 2d vector here
<强> a.cpp 强>
#include "a.h"
vector< vector<int> > vec2D; //define the 2d vector here
<强>的main.cpp 强>
#include "a.h"
//use the 2d vector here
答案 1 :(得分:0)
Main.cpp的
#include <vector>
std::vector<std::vector<int>> myArray;
int main(int argc, char **argv)
{
// blah...
myArray.add(5);
}
并在您的其他文件中:
#include <vector>
extern std::vector<std::vector<int>> myArray;
使用 extern 关键字允许你告诉编译器“嘿,这个对象就在这里,它不存在......但不要担心!你会发现它一旦链接器汇编编译的对象!“。
您还可以使用“ extern ”关键字来加载序列化数据(例如bmp2c,它会生成包含图片二进制数据的.c文件)
编辑:此外,2个对象具有完全相同的名称(区分大小写)非常重要。