Bonjour,
récemment, j'ai fait quelque chose qui marche, mais qui, à mon avis, est assez moche.
J'ai une classe CMyStream qui dérive de std::ostream et qui redéfinit quelques petites choses...
Or dans mon code, quand je veux utiliser mon stream, je ne peux pas faire ça :
En effet, l’opérateur "<<" n'est pas redéfini dans ma classe (ben oui je vais pas m’embêter) et je ne peux pas profiter de celui de ostream par polymorphisme (argh c'est pourtant ça que je voudrais, je suis feignant moi) car monStreamTest n'est ni un pointeur ni une référence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CMyStream monStreamTest(parametres_Constructeur); monStreamTest << "Salut tout le monde" << std::endl;
A l'inverse, ceci marche très bien :
Mais franchement je ne trouve pas ça super mignon (le déréférencement) et pas naturel a taper. Un simple "monStreamTest" serait tellement plus esthétique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ostream* monStreamTest=new CMyStream(parametres_Constructeur); (*monStreamTest) << "Salut tout le monde" << std::endl; // ... delete(monStreamTest); // oui oui le destructeur est virtuel toussa toussa ;)
Alors j'ai trouvé ça :
Ça marche, c'est plus joli à utiliser... Mais franchement j'ai un peu peur de me faire taper dessus... Je ne pense pas que les références aient été prévues pour ça, et je suppose que je dois deleter mon allocation en mémoire dynamique mais j'ai peur que le programme m'en veuille de venir souiller sa référence comme ça... Et je ne saurais même pas la syntaxe correcte..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ostream& monStreamTest=*(new CMyStream(parametres_Constructeur)); monStreamTest << "Salut tout le monde" << std::endl; // ...
Bref je soupçonne le gros truc dégueulasse.
En gros, j'aimerais votre avis, et si ça vous irrite les yeux, dites moi ce que je peux faire(une solution de débutant tellement plus évidente, élégante et sure..)
Merci pour votre aide et dsl pour le choc !![]()
Partager