Этот вопрос закрыт для ответов, так как повторяет вопрос Как реализовать наследование статического поля/метода, если это возможно?
@gense

Возможно ли как-то передать в параметр функции класс, по которому нужно будет создать объект?

Есть некая функция creator(...) которая должна создать объект. Но внутри неё неизвестно какого класса это будет объект, это известно только при вызове этой функции, "снаружи". Можно ли как-то передать туда ссылку или имя класса, по которым будет создаваться этот объект?

ЗЫ знаю что можно создать объект в параметрах creator(new MyClass) но в этой же функции решается вообще необходимость создание этого объекта. Можно создавать его каждый раз, а потом удалять если создание было ненужно, но это грязнохак и как-то не по-человечи

ЗЗЫ еще можно логику решения создавать объект или нет вынести за функцию, но тогда я нарушу принцип DRY. Там под каждый класс придется проверять
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
@vanyamba-electronics
template <class T>
T* create_class(T* object = nullptr)
{
   if (obj == nullptr) {
       obj = new T();
       if (obj == nullptr)
          throw Exception("Can't create " + std::string(name_of<T>()) + " object"); 
   }
   obj->init();
   return obj;
}
...
MyClass* mc = create_class<MyClass>();
delete mc;
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы