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

发布于 2024-10-13 19:35:34 字数 1021 浏览 2 评论 0原文

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

我目前有一个头文件概述了一个程序类:init()、render()、loop()、event()...(等) 其中每一个都是在自己的文件 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 教程中读到的。

Hey everyone!
I've recently started using header files in my c++ programs (fairly new to it) and was wondering what the best way to initialize global variables across all your files.

I currently have a header file outlining a program class with: init(), render(), loop(), event()... (etc)
Each of these is set up within their own own file, init.cpp etc..
So whats the best way to initialize variables so that all of the files can use them? Should I do it in the header file? Or is that a bad way to go about it.

Thanks in advance!

-Devan

Edit with organization info, didn't want to do it in the comments because there are no code blocks.

Here is my header file (CGame.h)

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

private:
bool running;

}

And then each of those methods is defined within their own .cpp file

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

Then all of them are called upon within my 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();
}

Is this not the correct way to do it? I think I read it in an old SDL tutorial.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江挽川 2024-10-20 19:35:34

不要使用全局变量。

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

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

Do not use global variables.

Until you have learned to do without global variables, declare the variables as extern in the header file, e.g extern int pi. This tells the compiler: "An integer named pi exists, don't care where it is, the linker will know where to find it". That way you can initialize them anywhere you want.

The best location is a matter of personal taste. Basically either use a central c++-file for all the variables or put them into the c++-file that they most closely relate to. Especially if the variable is used in only one source file, do not put it in the header but declare and define it in that source file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文