Глобальное использование переменных во всех файлах, настроенных в заголовочном файле. - PullRequest
0 голосов
/ 25 января 2011

Привет всем!
Я недавно начал использовать заголовочные файлы в моих программах на 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.

1 Ответ

4 голосов
/ 25 января 2011

Не используйте глобальные переменные.

Пока вы не научитесь обходиться без глобальных переменных, объявите переменные как extern в заголовочном файле, например, extern int pi.Это говорит компилятору: «Существует целое число с именем pi, все равно, где оно, компоновщик будет знать, где его найти».Таким образом, вы можете инициализировать их где угодно.

Лучшее местоположение - дело личного вкуса.По сути, либо используйте центральный файл c ++ для всех переменных, либо поместите их в файл c ++, с которым они наиболее тесно связаны.Особенно, если переменная используется только в одном исходном файле, не помещайте ее в заголовок, а объявляйте и определяйте ее в этом исходном файле.

...