0

我有一个 main.cpp 和一些类,它们中的每一个都定义在两个文件中:一个头文件和一个 .cpp 文件。在 main.cpp 我有一个二维向量。我想在类的成员函数中使用这个向量。首先我尝试包含主文件,但我收到了重新定义错误。之后我尝试在另一个 .h 文件中定义向量。但这也没有用。所以我应该怎么做才能在定义一些类时使用这个向量,这样它就可以保存成员函数所做的更改。

不幸的是,向量是全球性的!

有关更多信息,此向量是游戏板。这个游戏有一些对象:怪物、人类、宝藏和一些陷阱。该板在主要功能之前是全局定义的。main.cpp 中有一些函数使用了这个板,而我上面提到的 3 行的类在其成员函数中使用了这个板。

是使用'extern'的解决方案吗?(我不知道它是什么,我只是在答案中看到它!-如果它是解决方案,我应该搜索一下。)

4

2 回答 2

0

你可以这样写:

extern vector< vector<int> > vec2D; //declare the 2d vector here

a.cpp

#include "a.h"    
vector< vector<int> > vec2D;  //define the 2d vector here

主文件

#include "a.h"
//use the 2d vector here
于 2013-04-03T17:11:17.127 回答
0

主文件

#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文件)

编辑:另外,重要的是这两个对象具有完全相同的名称(区分大小写)。

于 2013-04-03T17:20:42.150 回答