我的代码:
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泛化。
答案 0 :(得分:1)
让ON tbdiref3_endereco AFTER UPDATE FOR EACH ROW SET NOCOUNT ON IF UPDATE
Singleton
函数成员成为instance
的朋友:
Derived