C++ 中有没有一种方法可以制作作用域全局变量?

Is there a way in C++ to make scoped global variables?

假设我有一个使用 n 个大模块的程序:

A) Network/Communication

B) I/O 个文件

C) I/O 数据库

D) 界面

E) ...

当然,模块列表可以更大。

假设我想要一些全局变量,但范围限于单个模块。

举个例子,假设 I/O 数据库模块将包含 10 个 类,每个代表数据库中的每个 table,但它需要一些 global const state like Name of table A, Columns of table A等(因为是关系型数据库,在table D中可能需要用到table A)。 同样明显的是,我不需要通过 Network/Communication 模块访问这些 table 名称。有没有办法让变量“全局”仅供 类 的某些部分访问?

只是为了澄清 - 我知道“对于某些部分来说是全局的”是矛盾的,但我的想法是我想保持可访问性(不需要将指针传递给每个对象),同时限制从哪里开始的地方它可以被调用(例如,从全局范围到模块范围的限制)

你不需要全局变量,我强烈建议你学习依赖注入。基本上你有一个“工厂”模块。每个模块都有一个接口,您可以注入一个接口,该接口具有访问集中数据的获取器。 (例如 class 的 n 个实例的成员)。这还允许您使用模拟和存根测试独立模块(例如测试 class returns 其他值)。 –