如何访问Meyers单例模式中的派生构造函数

时间:2017-09-04 15:25:34

标签: c++ design-patterns singleton

我的代码:

template<class T>
class Singleton {
public:
    static T& instance() {
        static T obj;
        return obj;
    }

protected:
    Singleton() { }
    Singleton(Singleton const& other);
    void operator=(Singleton const& other);
};

class Derived : public Singleton<Derived> {
protected:
    Derived() { }
};

void test() {
    Derived::instance();
}

我在static T obj行收到此错误:

‘Derived::Derived()’ is protected  
     Derived() { }
     ^

我该如何解决这个问题?也许使用friend关键字?但那有点尴尬。

注意:我了解Meyers单身人士的名字和想法,但我自己实施的原因是,我无法找到我第一次读到的地方关于它。我认为它要么在&#34;有效的C ++&#34;或者更有效的C ++&#34;,但我无法在那里找到它。我在网上找到的例子不使用CRTP泛化。

1 个答案:

答案 0 :(得分:1)

ON tbdiref3_endereco AFTER UPDATE FOR EACH ROW SET NOCOUNT ON IF UPDATE Singleton函数成员成为instance的朋友:

Derived