3
我有几种类型的使用策略,即选择专业化
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