我有一个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 ();
};

话虽如此,我想警告您,听起来对基类的对象的需求听起来不正确。这是某处设计缺陷的征兆。仔细考虑一下您的需求,并弄清楚是否有任何方法可以在不创建基类实例的情况下满足需求。

10-08 17:11