Question sur l'héritage en C++ - C++ - Programmation
Marsh Posté le 08-04-2006 à 03:54:40
L'argument de toXML ?
Marsh Posté le 08-04-2006 à 10:34:08
void Message::toXML( XMLWriter& writer ) masque les noms toXML dans tout les sub-object -- la supplantation de la fonction virtuelle est toutefois bien considérée. Ce qui fait que std::string BaseMessage::toXML() n'est pas considérée.
Je ne suis pas sur à 100% de l'explication. C'est une question que je me suis souvent posée, et j'y répond comme ça, j'espère que c'est correct.
Une bonne façon de procéder :
Code :
|
Marsh Posté le 08-04-2006 à 10:57:02
bof, le mieux c'est de trouver un meilleur nom : là tes 2 fonctions n'ont ni le même type de retour, ni les mêmes arguments. renomme en writeXMLTo(writer)
Marsh Posté le 08-04-2006 à 14:23:08
Oui je crois que je vais opter pour un autre nom, c'est plus facile. Mais ça m'était jamais arriver ce "masquage". Je commençais à plus rien n'y comprendre. Merci en tout cas.
Marsh Posté le 08-04-2006 à 19:17:35
Question relative au design.
Comment feriez vous pour gérer plusieurs modes de sérialisation pour le même objet parmi les formats XML, CSV, binaire par exemple ?
Marsh Posté le 08-04-2006 à 19:27:51
regardes Boost.Serialization, il y a 3 types d'archives, qui utilisent une fonction serialize() membre ou non de la classe dont on veut en sérialiser une instance.
Marsh Posté le 09-04-2006 à 10:28:23
Ok
Pour la postérité:
http://www.boost.org/libs/serialization/doc/index.html
Marsh Posté le 08-04-2006 à 01:09:24
Bonjour,
aujourdh'ui j'ai rencontré un problème avec des héritages en C++. Voici les deux classes à l'origine du problèmes.
Lorsque je fait :
J'ai l'erreur suivante :
error: no matching function for call to 'Message::toXML()'
./message.h:29: note: candidates are: virtual void Message::toXML(XMLWriter& )
Si je change la méthode toXML() en toXMLString cela marche.
D'ou vient le problème ?
Merci.