在类之间交换变量的正确方法是什么?

时间:2012-04-24 23:06:39

标签: c++

我有课程配置:

class Config
{
    public:
        Config();
        ~Config();
        void Read();
        CData var; //CData - some config structure
};

从其他类访问值的正确方法是什么?有几个选择:

  1. 让它全球化
  2. 转移对其他班级的引用
  3. 你的变种
  4. 在我的系统中,90%的课程都需要config.var.some

3 个答案:

答案 0 :(得分:3)

3)你可以使用静态,这基本上就像是使它成为全局的。

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;
}

但在这种情况下,最好只让var本身全局化。

答案 1 :(得分:1)

第三种方式:将访问者函数添加到Config类。

class Config
{
    public:
        Config();
        ~Config();
        void Read();
        int getNumberOfFooBars() const { return var.foo_bars; }
private:
        CData var; //CData - some config structure
};

答案 2 :(得分:1)

我通常会将这样的对象作为参考传递而不是懒惰并使其成为全局。如果传递对象,那么通过查看构造函数/成员初始化列表,很明显哪些类将使用该对象。相反,将其设为全局(作为单身或其他)会使您或其他人难以一目了然地看到哪些类需要该对象。

向配置类添加访问者函数,允许其他对象通过定义的接口访问其成员。这将允许您更改类的内部,而不会破坏与config类接口的代码。