oop — C ++ не позволяет пользователю создавать экземпляры объектов

Я должен создать простую фабрику одноэлементных объектов для некоторых типов объектов. Проблема в том, что я не могу найти умный способ запретить пользователю создавать экземпляры объектов конструкторами. Я знаю, что могу перемещать конструкторы в закрытый / защищенный раздел, но как теперь фабрика будет создавать новые объекты, когда конструкторы являются частными / защищенными? Делать фабрику другом каждого класса не очень разумно, так как мне нужно предварительно объявить фабрику в каждом заголовке и написать дополнительную «фабрика друга»; в каждом классе. Как это сделать правильно?

0

Решение

В классе добавьте статический член в качестве указателя на тот же тип класса. Это будет твой синглтон.

При инициализации экземпляра конструктор запускается.

Если это первый раз, статический член имеет значение null (никогда не инициализируется), обычно запускайте конструктор и устанавливайте значения по умолчанию. В конце также установите статический член в this, Теперь ваш синглтон инициализирован.

В последующих вызовах конструктора статический указатель не будет нулевым. Сделайте временный указатель на тип класса. Установите этот указатель на thisзатем установите this статический член и удалите указатель. Это удалит новый экземпляр и будет возвращать один и тот же статический экземпляр каждый раз.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]