Основы:
реальные ответы:
global_objects.hpp
extern int myGlobalInt;
global_objects.cpp
#include "global_objects.hpp"
namespace
{
int myGlobalInt;
}
А затем #include "global_objects.hpp"
везде, где вам нужно myGlobalInt
.
Вы также должны прочитать Синглтон C ++ против глобального статического объекта и Инициализация ресурсов qt, встроенных в статическую библиотеку .
В общем случае вам не следует использовать глобальные переменные в объектно-ориентированном программировании. В вашем случае вы можете решить проблему, предоставив статические функции доступа к переменной в вашем основном классе. Однако вы должны знать, что это несколько противоречит ООП.
class MainClass
{
public:
static int mySharedValue(void) { return m_mySharedValue; }
static void setMySharedValue(int value) { m_mySharedValue = value; }
private:
static int m_mySharedValue;
}
Foo::myOtherClassFunction(void)
{
// do something
int bar = MainClass::mySharedValue();
// do some more
}
Кроме того, вы можете унаследовать свое основное приложение от QApplication и добавить туда функции доступа, обращаясь к основному объекту через указатель qApp
. пользователя Qt.
Вдобавок к этому вы всегда можете использовать глобальную переменную так же, как и в C, хотя я бы не рекомендовал это.
В Qt есть одноэлементное QApplication с его статическим методом QApplication :: instance (), который возвращает вам единственный объект QApplication. Он имеет множество других статических функций-членов (в прежние времена их называли «глобальными») для главного окна, активного окна и т. Д.
http://doc.trolltech.com/4.5/qapplication.html
Вы можете создать подкласс, если хотите добавить свою статику.