C++ Qt中的全局变量,如何使用?

C++ Qt中的全局变量,如何使用?,c++,qt,global-variables,C++,Qt,Global Variables,我使用的是Qt,在main方法中,我需要声明一个我需要在所有其他文件中使用的对象。如何在其他文件中访问该对象?(我需要让它全球化……) 我已经习惯了iPhone的开发,这里有一个appDelegate,你可以在整个应用程序中使用它来访问你在ApplicationIDFinishLaunching方法中声明的对象。如何在Qt中执行相同的操作?global\u objects.hpp extern int myGlobalInt; 全局_objects.cpp #include "global_o

我使用的是Qt,在main方法中,我需要声明一个我需要在所有其他文件中使用的对象。如何在其他文件中访问该对象?(我需要让它全球化……)

我已经习惯了iPhone的开发,这里有一个appDelegate,你可以在整个应用程序中使用它来访问你在ApplicationIDFinishLaunching方法中声明的对象。如何在Qt中执行相同的操作?

global\u objects.hpp

extern int myGlobalInt;
全局_objects.cpp

#include "global_objects.hpp"

namespace
{
    int myGlobalInt;
}
然后
#将“global_objects.hpp”
包含在您需要的每个地方
myGlobalInt


您还应该阅读和。

一般来说,在面向对象编程中不应该使用全局变量。在您的例子中,可以通过向主类中的变量提供静态访问函数来解决问题。不过,您应该知道,这在某种程度上与OOP相反

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派生主应用程序,并在其中添加访问函数,通过Qt提供的
qApp
指针访问主对象。
除此之外,您可以始终以与在C中相同的方式使用全局变量,尽管我不建议这样做。

在Qt中,有一个单一的QApplication,它的静态方法QApplication::instance()返回唯一的QApplication对象。 它还有许多其他静态成员函数(在早期它们被称为“globals”),用于主窗口、活动窗口等


如果您想添加自己的静态数据,可以对其进行子类化。

您忘记了.hpp文件中的
extern
关键字--每次包含hpp时,这将实例化
myGlobalInt
。我使用全局对象的想法是因为该对象将保存我在几乎每个小部件中需要的数据,并且该数据是从数据库如果不使用全局对象,则每次实例化对象时都需要访问数据库。我认为最好只买一次,这是错误的想法吗?