Код: Выделить всё
template
static T* makeObj()
{
return new T();
}
using createFunction = std::function;
map types;
template
static void add(const std::string& name)
{
types.insert(name, makeObj);
}
Код: Выделить всё
template
static std::list getFilteredListOfTypes()
{
}
Первая идея — создать карту со структурой в качестве значения и сохранить там объект соответствующего типа, я могу использовать < strong>dynamic_cast и проверяем все типы, но я сомневаюсь, что создание объекта — хорошая идея.
Другой способ — использовать std::is_base_of:
Код: Выделить всё
template< class Base, class Derived >
struct is_base_of;
Есть ли способ создать такую функцию фильтра без создания объектов?Это плохая идея — создать здесь объект? Разве это плохая идея — создавать объект для каждого элемента карты? Меня немного пугает ситуация, когда на заводе будут сотни совсем не маленьких типов.
Подробнее здесь: https://stackoverflow.com/questions/786 ... he-factory