3 votes

Mixin de fabrique de classe

Je voudrais créer dans un mixin class qui donnerait un class Méthode d'usine pour la classe finale d'un type concret à travers plusieurs couches d'héritage. Plus précisément, je voudrais que la méthode de fabrique produise une nouvelle instance de l'objet réel dont elle est appelée comme membre.

Ainsi, la classe "factory" est héritée par la classe A , la classe A est hérité par la classe B J'aimerais trouver un moyen de faire B::create() et créer une instance de B . Pour autant que je sache, cela exclut l'utilisation d'un modèle prenant le type dans la classe A depuis lors B::create() produirait une instance de A .

2voto

vines Points 3649

Peut-être que le CRTP ferait l'affaire ? http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern

template <typename T>
struct Mixin
{
    T * create() const { return new T; }
};

class Target : public Mixin<Target>
{
    ...
};

1voto

n.m. Points 30344

Tu ne peux pas. Le code de la classe de base ne sait rien des classes dérivées, à moins que vous n'incitiez vous-même ce type de connaissance, au moyen d'un paramètre de template ou autre. Il n'y a aucun moyen de le faire automatiquement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X