C ++:使动态初始化的变量可用于其他.cpp文件

时间:2011-11-14 21:51:16

标签: c++

我有一个int vertexCount变量,它是通过读取loader.cpp上的文本文件来初始化的,我希望将其提供给单独的model.cpp文件。

我应该将其声明为

  

extern vertexCount

model.cpp上的

?或者.h

2 个答案:

答案 0 :(得分:3)

您在适合此变量的标头中转发声明extern int vertexCount;,并在.cpp:int vertexCount;中声明(即分配内存)。你可以在包含代码的任何文件的代码中立即初始化它(int vertexCount = 1;)或稍后(当然,你需要包含标题)。

但是,在真正初始化变量之前,您不应该访问该变量。

您可以考虑将变量放入一个类中,这将确保在构造函数或首次访问(您需要一种getter)或在后台等中进行正确初始化。这种方式可能是干净。

答案 1 :(得分:1)

我在你的.h:

中声明了类似的内容
extern VertexCount *vertexCount;

然后在一个且只有一个.cpp文件中定义(为其分配空间)(例如,“main.cpp”):

#include "myheader.h"  // contains the "extern"
...
VertexCount *vertexCount = NULL;
...