Краткий ответ: нет.Смысл создания приватного конструктора genericRoot
состоит в том, чтобы предотвратить его создание в любом месте, кроме метода фабрики getInstance
.Когда вы создаете экземпляр подкласса genericRoot
, вы неявно создаете также экземпляр genericRoot
.(Фактически, новый объект равен a genericRoot
, пока работает конструктор genericRoot
.)
Таким образом, дизайн нуждается в некотором переосмыслении.Я предполагаю, что идея заключается в том, чтобы все подклассы имели общее состояние.Если это так, то, возможно, какое-то частное статическое состояние будет иметь больше смысла, чем шаблон синглтона.Примерно так:
class genericRoot
{
private:
static SomeType private_state_;
protected:
// whatever state accessors are needed for subclasses...
};
Вместо конструктора для genericRoot
вы просто инициализируете приватное состояние внутри соответствующего файла cpp
:
SomeType genericRoot::private_state_ = InitializePrivateState();