Classe options et polymorphisme
Bonsoir,
J'avais lu il y a quelques temps sur Dr Dobbs un article assez interressant sur les classes options. Ce qui m'interesse est l'un des premiers exemples :
Code:
1 2 3 4 5 6 7
| File f = OpenFile( "foo.txt" )
.readonly()
.createIfNotExist()
.appendWhenWriting()
.blockSize( 1024 )
.unbuffered()
.exclusiveAccess(); |
J'ai trouvé l'idée de **cacher** la la classe d'options très... hum ... esthétique.
Par ailleurs, j'ai voulu essayer de creer un petites classe de generalisation de GUI( prenons par exemple qt et wxWidget). Pour permettre à chaque GUI d'obtenir les information qui lui vont bien j'ai pensé aux classe d'options :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class GenericGui
{
};
class QtImpl : public GenericGui
{
public:
class Option
{
};
};
QtImpl::Option useQtGui();
class wxWidgetImpl : public GenricGui
{
public:
class Option
{
};
};
wxWidgetImpl::Option usewxWidgetGui(); |
L'idée est de pouvoir les utiliser comme ceci :
Code:
GenericGui* gui(useQtGui().option1(true).option2(2.5));
Je vois en gros deux solution mais la premiere me parait crade et la seoncde me gène un peu :
- ou je crée un operateur de conversion dans mes classes options vers GenericGui*
- ou je crée une fonction membre(ou un operateur) qui renvoie un GenericGui*
En gros j'aimerais connaitre votre avis.
Merci d'avance