我有类配置:
class Config
{
public:
Config();
~Config();
void Read();
CData var; //CData - some config structure
};
从其他类访问值的正确方法是什么?有几个选项:
- 使其全球化
- 将引用转移到其他类
- 你的变种
在我的系统config.var.some
中,90% 的课程都需要。
我有类配置:
class Config
{
public:
Config();
~Config();
void Read();
CData var; //CData - some config structure
};
从其他类访问值的正确方法是什么?有几个选项:
在我的系统config.var.some
中,90% 的课程都需要。
3) You can use statics, which is basically like making it global.
class Config
{
public:
static CData var; //CData - some config structure
static CData Read();
};
//these in a cpp file
CData Config::var = Config::Read();
int main() {
std::cout << Config.var.something;
}
but in this case, it's probably best just to make var
itself global.
第三种方式:在Config
类中添加访问器函数。
class Config
{
public:
Config();
~Config();
void Read();
int getNumberOfFooBars() const { return var.foo_bars; }
private:
CData var; //CData - some config structure
};
我通常会将这样的对象作为参考传递,而不是懒惰并使其成为全局对象。如果您传递对象,那么通过查看构造函数/成员初始化器列表很明显哪些类将使用该对象。相反,使其全局化(作为单例或其他)会使您或其他人难以一眼看出哪些类需要该对象。
向配置类添加访问器函数,允许其他对象通过定义的接口访问其成员。这将允许您在不破坏与配置类接口的代码的情况下更改类的内部结构。