我有一个int vertexCount
变量,它是通过读取loader.cpp
上的文本文件来初始化的,我希望将其提供给单独的model.cpp
文件。
我应该将其声明为
extern vertexCount
model.cpp
上的?或者.h
?
答案 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;
...