У меня есть несколько типов созданы с помощью политик, т.е.выбрать специализацию шаблона класса, используя строку
template <typename PolicyA, typename PolicyB>
class BaseType : PolicyA, PolicyB
{};
struct MyPolicyA {};
struct MyPolicyB {};
struct OtherPolicyB {};
using SpecializedTypeX = BaseType<MyPolicyA, MyPolicyB>;
using SpecializedTypeY = BaseType<MyPolicyA, OtherPolicyB>;
Теперь я хотел бы представить какой-то механизм, который позволяет мне элегантно выбрать, какие SpecializedType следует использовать на основе входных данных из например командная строка. В идеале это был бы заводский метод, создающий объект соответствующего типа, например:
auto CreateSelectedSpecializedType(const std::string &key);
// selected has type SpecializedTypeX
auto selected = CreateSelectedSpecializedType("SpecializedTypeX");
Буду признателен за любые советы. Благодаря!
Какой тип 'CreateSelectedSpecializedType' возвращает? 'BaseType ' и 'BaseType ' являются несвязанными типами. Если экземпляры 'BaseType' все унаследованы от некоторого' RootClass', вы можете вернуть 'std :: unique_ptr' и иметь простое сопоставление от строк к функциям создания. –
TartanLlama
@TartanLlama Ты прав, вот что я буду делать. Благодаря! – pzelasko