Bonjour,
Je vous ecrit car j'essaye de developper une classe proprement (pour une fois) dans laquelle je donne au constructeur un parametre de type "ostream&" avec cout comme parametre par defaut histoire de pouvoir rediriger par la suite tous les messages de ma classe vers le flux que je veux (un fichier de log à la place de la sortie standard par exemple).
Voici en exemple le constructeur simplifié avec vous l'aurez compris les deux données membres declarées precedemment en private dans la classe :
Ceci fonctionne parfaitement et j'ecris tous mes message sous la forme :CCamera(int indexCam, std::ostream& stream=std::cout)
: m_stream(stream),
m_indexCam(indexCam)
{}
Maintenant j'ai un peu reflechi et j'aimerai faire quelques chose de mieux. Je m'explique : je voudrais que, a chaque fois que j'utilise mon "m_stream", il se rajoute en en-tete du message que je vais rediriger, un message identifiant d'ou vient le message.m_stream << "exemple sortie" << std::endl;
En clair j'aimerais que pour cette classe camera qui sera instanciée avec indexCam=N par exemple, quand j'utilise la ligne de code precedente, au lieu d'avoir dans mon flux : "exemple sortie" j'ai quelques chose du style : "CAMERA N : exemple sortie"
J'ai pensé a creer une classe CMyStream et à redefinir l'operateur << mais je ne sais pas vraiment comment m'y prendre.
Dois-je deriver ma classe de ostream histoire de pouvoir prendre avantage de toutes le fonctions membres existantes deja ?
Dois plutot juste faire une classe basique sans forcement deriver de ostream ?
Bref si vous avez des conseils concernant ce type de besoin ou une piste a explorer je vous en serait reconnaissant :-)
Merci de votre aide à bientot !!!
Partager