我正在使用Qt,在main方法中需要声明一个对象,我需要在所有其他文件中使用它。如何在其他文件中访问该对象?(我需要将其设置为全局变量...)
我习惯于iPhone开发,在那里我们有appDelegate,可以在整个应用程序中使用它来访问在applicationDidFinishLaunching方法中声明的对象。我如何在Qt中做到这一点?
我正在使用Qt,在main方法中需要声明一个对象,我需要在所有其他文件中使用它。如何在其他文件中访问该对象?(我需要将其设置为全局变量...)
我习惯于iPhone开发,在那里我们有appDelegate,可以在整个应用程序中使用它来访问在applicationDidFinishLaunching方法中声明的对象。我如何在Qt中做到这一点?
global_objects.hpp
extern int myGlobalInt;
global_objects.cpp
#include "global_objects.hpp"
namespace
{
int myGlobalInt;
}
在每个需要 myGlobalInt
的地方,都需要包含 #include "global_objects.hpp"
。
您还应该阅读 C++ 单例模式 vs. 全局静态对象 和 初始化嵌入在静态库中的 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
}
qApp
指针访问主对象。
除此之外,您也可以像在 C 中一样始终使用全局变量,但我不建议这样做。
extern
关键字 -- 这将导致每次包含hpp文件时都会实例化myGlobalInt
。 - bluebrother