Je voudrais construire une classe de base (abstraite) (appelons-la type::base
) avec une fonctionnalité courante et une interface fluide, le problème auquel je fais face est le type de retour de toutes ces méthodesInterface fluide et héritage en C++
class base {
public:
base();
virtual ~base();
base& with_foo();
base& with_bar();
protected:
// whatever...
};
maintenant, je pourrais faire des sous-types, par exemple:
class my_type : public base {
public:
myType();
// more methods...
};
Le problème vient lorsque vous utilisez ces sous-types comme ceci:
my_type build_my_type()
{
return my_type().with_foo().with_bar();
}
Ceci ne sera pas compilé car nous retournons la base au lieu de my_type.
Je sais que je pouvais:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
Mais je pensais comment puis-je mettre en œuvre, et je ne l'ai pas trouvé des idées valables, une suggestion?
J'ai supprimé l'espace de nommage parce qu'il n'a rien (pour autant que je peux voir) à faire avec la question –