在头文件中设置的所有文件中全局使用变量

时间:2011-01-25 01:04:20

标签: c++ organization

嘿大家! 我最近开始在我的c ++程序中使用头文件(相当新的)并且想知道在所有文件中初始化全局变量的最佳方法是什么。

我目前有一个头文件概述了一个程序类:init(),render(),loop(),event()...(etc) 其中每个都在自己的文件init.cpp等中设置。
那么什么是初始化变量的最佳方法,以便所有文件都可以使用它们?我应该在头文件中这样做吗?或者这是一个不好的方式。

提前致谢!

-Devan

使用组织信息进行编辑,不希望在评论中执行此操作,因为没有代码块。

这是我的头文件(CGame.h)

class CGame
{
public:  
    CGame();  
    int execute();
    bool init();
    void event();
    void loop();
    void render();
    void cleanUp();
protected:

private:
bool running;

}

然后,每个方法都在自己的.cpp文件中定义

#include "CGame.h"
void CGame::render() 
{
}

然后在main.cpp

中调用所有这些内容
CGame::CGame()
{
    running = true;
}

int CGame::execute()
{
    if(init() == false)
    {
        return -1;
    }

    while(running)
    {
        loop();
        render();
    }
        cleanUp();
        return 0;
}

int main (void)
{
    CGame app;
    return app.execute();
}

这不是正确的方法吗?我想我是在旧的SDL教程中阅读的。

1 个答案:

答案 0 :(得分:4)

不要使用全局变量。

在您学会没有全局变量之前,请在头文件中将变量声明为extern,例如extern int pi。这告诉编译器:“存在一个名为pi的整数,不关心它在哪里,链接器将知道在哪里找到它”。这样你就可以在任何你想要的地方初始化它们。

最佳位置是个人品味。基本上要么为所有变量使用中央c ++文件,要么将它们放入与它们最密切相关的c ++文件中。特别是如果变量仅在一个源文件中使用,请不要将其放在标题中,而是在该源文件中声明并定义它。