J'ai plusieurs types créés à l'aide des politiques, à savoirspécialisation select de classe modèle en utilisant une chaîne
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>;
Maintenant, je voudrais vous présenter un mécanisme qui me permet d'élégance de sélection qui SpecializedType doit être utilisé se basant sur les commentaires de par exemple ligne de commande. Idéalement, ce serait une méthode d'usine créant un objet du type approprié, comme:
auto CreateSelectedSpecializedType(const std::string &key);
// selected has type SpecializedTypeX
auto selected = CreateSelectedSpecializedType("SpecializedTypeX");
J'apprécierais tout conseil. Merci!
Quel type '' CreateSelectedSpecializedType' retournerait? 'BaseType ' et 'BaseType ' sont des types non apparentés. Si les instanciations 'BaseType' sont toutes héritées de' RootClass', alors vous pouvez retourner un 'std :: unique_ptr' et avoir un mappage simple des chaînes vers les fonctions de création. –
TartanLlama
@TartanLlama Vous avez raison, c'est ce que je vais faire. Merci! – pzelasko