在其方法中获取单例实例

时间:2015-03-22 10:36:44

标签: c++ design-patterns singleton

我有简单的单身人士课程:

class Singleton
{
    public:
        static Singleton& getInstance()
        {
            static Singleton instance;
            return instance;
        }
        // private constructor, etc...
}

问题是如何从其成员函数访问类实例? 我已经看过各种代码片段,现在我很好奇他们是否有任何重大差异。

1

void Singleton::something(){
    Singleton &self = getInstance();
    self.doSomething();
}

2

void Singleton::something(){
    this->doSomething();
}

3

void Singleton::something(){
    doSomething();
}

2 个答案:

答案 0 :(得分:2)

  1. 是不必要的复杂功能 - 在像something这样的非静态成员函数中,我们已经有了一个实例,因此无需单独获取它。

  2. 和3.相同,只有3.更短且更惯用 - 使用this->访问C ++中的成员并不常见。

答案 1 :(得分:0)

我不认为应该有任何其他成员函数来获取除Singleton::getInstance();之外的类实例,因为这就是它存在的原因。请按以下步骤操作:

Sungleton &dst=Singleton::getInstance();

实际上,无法从非静态成员函数中获取实例。当没有类实例时,如何调用其非静态成员。