Voici pour le bout de code. L'idée est de lire les variables de mon programme depuis un fichier xml (en utilisant tinyxml).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| template <typename T>
T read_xml_val(TiXmlNode &parent, const string &name,T def)
{
T result;
TiXmlText *txtnode; // noeud xml qui contient le texte
string text;
istringstream iss;
result = def; // valeur par defaut
txtnode = get_xml_text(parent,name);
if (txtnode) {
text = txtnode->ValueStr();
iss.str(text);
iss >> result; // ---> Bug si T est un string
}
return result;
} |
J'ai donc cette fonction template qui lit le texte associé à ma variable et le convertit.
Cette fonctionne fonctionne sans problème pour les type int, double, bool mais quand je l'appelle avec T = string, le programme plante par la suite (mais pas dans cette fonction) comme si la mémoire avait été modifiée.
En particulier j'ai plus loin (autre procédures, dans des classes) des initialisation du type :
string montexte = "texte";
Aucun problème avant l'appel à cette procédure, ensuite montexte prend n'importe quelle valeur !
J'ai déjà mis un bout de temps à cerner le problème et j'ai du mal à comprendre l'erreur.
Partager