Qt C++创建一个可供所有类访问的全局变量

Oma*_*ine 1 c++ qt global-variables

是否有可能为我的程序中的所有类创建一个全局可访问的变量,如果我从一个类更改它的值,它也会为所有其他类更改?

如果是这样,我该如何实现?

dte*_*ech 5

每个人都在喋喋不休地说"全局是邪恶的",但我说几乎所有东西都可以使用或滥用.此外,如果全局性本质上是坏的,他们根本就不会被允许.在全局变量的情况下,很有可能意外误用非常消极的后果,但如果你真的知道你在做什么,它们是100%罚款:

// globals.h - for including globals
extern int globalInt; // note the "extern" part

// globals.cpp - implementing the globals
int globalInt = 667;
Run Code Online (Sandbox Code Playgroud)

使用命名空间来避免命名冲突并保持范围更清晰也是一个非常好的主意,除非您对命名约定特别细致,这是执行命名空间的旧方法.

此外,特别是如果您使用多个线程,最好创建一个接口来访问封装的全局内容,这些内容也将具有模块化锁定,甚至可以在任何可能的情况下锁定(例如直接使用原子).

但全球化不一定是唯一的解决方案.根据你真正需要的东西,单身人士或静态类成员可以做到这一点,同时保持它更整洁,避免使用邪恶的全局.