多个C ++文件中的共享向量变量

时间:2013-05-02 22:28:41

标签: c++ variables

我想在两个cpp文件(A.cpp和B.cpp)之间共享(全球化)一些向量变量(V1和V2)。 我已经通过以下命令在A.h中定义了V1和V2。

extern vector<uint64_t> V1;
extern vector<uint64_t> V2;

我还在A.cpp和B.CPP文件中添加了#include“A.h”。任何人都可以让我知道我还能做些什么才能在这两个CPP文件中访问V1和V2的元素?

先谢谢

3 个答案:

答案 0 :(得分:10)

首先,您需要选择应该定义矢量的位置。假设您选择A.cpp

A.cpp中(仅在一个文件中 - 在多个文件中定义相同的对象将产生多个定义的符号错误)定义向量作为全局变量:

 vector<uint64_t> V1;
 vector<uint64_t> V2;

B.cpp(以及您要访问的所有其他文件中V1V2向量声明为extern。这将告诉链接器在别处搜索实际对象:

 extern vector<uint64_t> V1;
 extern vector<uint64_t> V2;

现在,在链接步骤V1和来自V2的{​​{1}}将与来自B.cpp的{​​{1}}和V1相关联(或这些对象定义)。

答案 1 :(得分:2)

extern意味着这只是声明变量,它不会定义它们。在某些源文件(不是标题)中的某个地方,您只需要一个这些变量的定义。 DEFINITION看起来与没有extern

的DECLARATION完全相同

答案 2 :(得分:2)

您已在头文件中创建了一个声明;现在需要在单个编译单元(.cpp文件)中创建定义。

所以选择.cpp文件,并将定义放在那里。在这种情况下,定义与声明相同,但没有extern关键字。

vector<uint64_t> V1;
vector<uint64_t> V2;