Probleme de surcharge operateur << - C++ - Programmation
Marsh Posté le 20-06-2009 à 17:58:04
2 trucs :
1/ Pas sur que tu puisse surcharger les operator d'une enum. il faut que ton PARAM soit lui même une classe avec un operator<< qui gére les éléments qui lui succédent.
2/ Sinon, pour que ca marche, ton 1er parametre de operator<< devrait etres un PARAM&
Marsh Posté le 20-06-2009 à 18:43:40
En fait si c'est possible car si j'ajoute ceci
Code :
|
ca déclenche bien la surcharge 2. Y'a juste qu'apparement elle refuse de se déclencher si y'a deja eu un ostream précédement dans la liste des surcharges.. J'y pige rien.
Marsh Posté le 20-06-2009 à 20:36:40
Voila ce qui se passe :
Code :
|
est résolu comme:
Code :
|
Or le (os<<p) renvoit un ostream et donc tu ne peut pas activer la bonne surcharge.
Mates comment std::hex et cie sont implantés.
Marsh Posté le 20-06-2009 à 20:38:14
Code :
|
est à interpréter comme
Code :
|
Marsh Posté le 20-06-2009 à 23:53:01
difficile de comprendre simplement comment sont implémenté les parametres des streams vu le fouillis que c'est dans les headers de la STL. Est-ce que quelqu'un serai en mesure de me fournir un résumé ?
Marsh Posté le 21-06-2009 à 08:36:00
Je ne comprends ta question... en passant, à part pour des choses simplissimes, regarder l'implémentation d'une bibliothèque pour comprendre comment l'utiliser n'est pas une bonne solution.
Si le contenu des bouquins d'introduction ou des références généralistes (Stroustrup, Jossutis) ne te suffit pas, la référence sur les streams, c'est Standard C++ IOStreams and Locales, Langer et Kreft, Addison-Wesley.
Marsh Posté le 20-06-2009 à 17:49:39
Je cherche a mettre en place une gestion de paramètres personnalisés au milieu des stringstream ( ou des ostream ).
Donc j'ai mis en place ce test pour constater la détection d'une valeur personnalisable :
Probleme, la surcharge 1 sur s.str() << p se déclenche effectivement bien, mais par contre ce qui m'interresse vraiment c de récupere la chaine qui vien apres "p", et la c le drame, je n'arrive pas a déclencher la surcharge 2, soit p << " fin" ...
Donc je suppose que je m'y prend mal, comment dois je surcharger l'operateur << a ce niveau la ???