【发布时间】:2015-02-14 16:18:57
【问题描述】:
到目前为止,我一直通过以下方式使用类:
GameEngine.h 声明类如下
class GameEngine {
public:
// Declaration of constructor and public methods
private:
InputManager inputManager;
int a, b, c;
// Declaration of private methods
};
然后我的 GameEngine.cpp 文件只需实现方法
#include "____.h"
GameEngine::GameEngine() {
}
void GameEngine::run() {
// stuff
}
但是,我最近读到变量声明不应该在头文件中。在上面的示例中,这将是一个 inputManager 和 a、b、c。
现在,我一直在寻找放置变量声明的位置,我找到的最接近的答案是:Variable declaration in a header file
但是,我不确定在这里使用 extern 是否有意义;我只是声明了只在类本身的实例中使用的私有变量。我在头文件中的变量声明好吗?或者我应该把它们放在别处?如果我应该把它们放在 cpp 文件中,它们会直接放在 #include 下吗?
【问题讨论】:
-
“变量声明不应该在头文件中”....什么?成员变量必须在类声明中声明。
-
如果该变量打算在全局范围内使用,则 extern 进入标题,并且您在某个 .cpp 文件中定义变量 once。如果它们是内部使用的全局变量,那么它们会进入 .cpp。如果它们在逻辑上是类的一部分,则将它们设为成员变量。
-
变量声明和member变量声明是不同的。此外,给你带来问题的是非成员变量的定义,而不是声明。
-
您的意思是使用Pimpl idiom 吗?我不明白你在那里读到的内容。
-
试过但找不到原来的语句了。实际上,它在 SO 上的某个地方,但是自从我尝试寻找答案后,我的历史太满了,无法再次找到它。对我来说,在 .h 文件中声明变量是一种糟糕的编程风格,这听起来像是一个笼统的说法。但是,考虑到您的反应,我可能误解了它。
标签: c++ header-files variable-declaration