让我们说我有M,A,B,C类.M是我的应用程序的主要类(这是完成大部分工作的那个)并具有这种结构
class M {
public:
// Something here.
private:
Conifg config;
A a;
std::vector<B> bs;
const C* c;
};
Run Code Online (Sandbox Code Playgroud)
在一个主要的我创建一个M类的实例m,我想设置我的配置对象,比如从文件中读取它.配置对象没什么特别的,它可以是协议缓冲区或简单的结构.
现在,我希望a,b和c能够访问配置对象,因为它们需要一些全局设置.这些设置是全局的,它们不会改变,并且对于A,B和C(和M)的每个实例都是相同的.我目前正在做的是在每个类A,B和C中都有一个静态字段,我正在为这些类的每个实例设置一个配置对象的副本.我不希望这些类知道M.的存在.这是最好的解决方案吗?我是否应该想到一个全局配置变量?
我建议您使用额外的静态类进行配置,而不是所有类中的静态字段,在您想要的位置包含其标头。
实现一个静态构造函数,在其中初始化静态成员中所需的所有数据。我认为这将是一个更好的解决方案。