我有一个GenericRoot类,该类具有许多从其衍生的类。我只想创建此类的单个实例。我熟悉here的这种方法:
class genericRoot {
private:
genericRoot() {}
public:
static genericRoot &getInstance ();
};
class Handler : public genericRoot {
}
但是,这导致每个Handler(以及从Generic Root派生的每个其他类)得到两个错误:
有没有一种干净的方法可以做到这一点?
最佳答案
当然。使genericRoot
的默认构造函数成为protected
成员函数。
class genericRoot {
protected:
genericRoot() {}
public:
static genericRoot &getInstance ();
};
话虽如此,我想警告您,听起来对基类的对象的需求听起来不正确。这是某处设计缺陷的征兆。仔细考虑一下您的需求,并弄清楚是否有任何方法可以在不创建基类实例的情况下满足需求。