Erreur compile SetText.

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, j'utilise tinyxml2 sur Qtcreator et j'obtiens une erreur de compilation qui me semble incompréhensible. Ça dit que SetText n'est pas une fonction membre de XMLElement, mais pourtant oui! C'est même l'autocomplétion qui me la proposait. J'ai donc vérifier le header(tinyxml2 tient en un seul et unique header) et elle est bien là. Je n'ai aucune idée de ce qui se passe. Du coup j'ai eu l'impression de le compilateur, la vie ou je ne sais quoi me trollait… Preuve en imagetroll Mon code

1
2
         XMLElement * pfiletype = doc.NewElement("type");
pfiletype->SetText("module");

Merci de votre temps.

Édité par RedFruit

+1 -0

Regarde plutôt l'onglet "Sortie de Compilation" pour avoir l'erreur entière, je trouve que l'onglet problème a la méchante habitude de ne mettre qu'un petit morceau de l'erreur, et donc de ne servir à rien^^

Sinon les deux lignes que tu as données sont telles quelles dans ton code ou c'est une adaptation?

+0 -0
Auteur du sujet

Voilà, ce n'est pas plus convaincant.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
13:41:50: Running steps for project test...
13:41:50: Configuration unchanged, skipping qmake step.
13:41:50: Starting: "/usr/bin/make" -j6
g++ -c -pipe -std=c++11 -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib64/qt4/mkspecs/linux-g++ -I../test -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I../test -I. -o projectmanager.o ../test/projectmanager.cpp
../test/projectmanager.cpp: In member function 'void ProjectManager::SaveModuleProject(ModuleProject*, std::string)':
../test/projectmanager.cpp:122:13: error: 'class tinyxml2::XMLElement' has no member named 'SetText'
   pElement->SetText("sdasd");
             ^
Makefile:474: recipe for target 'projectmanager.o' failed
make: *** [projectmanager.o] Error 1
13:41:51: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project test (kit: Desktop)
When executing step "Make"
13:41:51: Elapsed time: 00:01.

C'était bien les linges telles quelles. Elles font partie d'une méthode. l'erreur vient toujours de SetText(). J'avais commenté et utilisé setAttribute pour continuer à travailler. Mais quand même, je ne comprend pas pourquoi ça donne une erreur et ça m'énerve. Je ne peux pas continuer dans l'incompréhension. Ça me parait simple comme erreur, mais pourtant ça ne fait aucun sens. Voilà le code d'essai de ce matin.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
  void ProjectManager::SaveModuleProject(ModuleProject* project, std::string path)
  {
    if(project)
    {
  XMLDocument doc;
  XMLNode * pRoot = doc.NewElement("Root");
      doc.InsertFirstChild(pRoot);

      XMLNode * pHeader = doc.NewElement("Header");
         pRoot->InsertEndChild(pHeader);
         XMLElement * pfiletype = doc.NewElement("type");
pfiletype->SetAttribute("ftype", "MODULE");

      if(project->getType() == BASIC) pfiletype->SetAttribute("mtype", "BASIC");
      else if(project->getType() == WEAPON) pfiletype->SetAttribute("mtype", "WEAPON");
      else if(project->getType() == THRUSTER) pfiletype->SetAttribute("mtype", "THRUSTER");

          pHeader->InsertEndChild(pfiletype);
  XMLElement * pElement = doc.NewElement("Stats");
  pElement->SetText("sdasd");
//...code...
}
+0 -0

Lu'!

Si tu compiles le fichier de test disponible dans le dossier de tinyxml2, tout est ok ? (Ce dernier comprend au moins un appel à SetText).

Au passage, si tu utilises Qt, il contenait déjà probablement de quoi manipuler des XMLs.

First : Always RTFM - "Tout devrait être rendu aussi simple que possible, mais pas plus." A.Einstein

+1 -0

+1, toujours lancer les tests quand on compile un truc téléchargé, on ne sait jamais, ça arrive parfois d'avoir des trucs louches^^

Sinon, tu es sur que le fichier que tu as ouvert est bien celui qui est inclut?

Et je vois que tu n'utilise pas le namespace tinyxml dans ton code, y a un using qui traîne? Y aurait pas un soucis de forward declaration bancale quelque part? (probablement pas vu que la ligne du dessus compile, mais on ne sait jamais^^)

Et oui Qt a largement ce qu'il faut pour parser du XML, mais vu qu'il n'y a pas de Qt dans ce bout de code, c'est probablement pour ne pas incruster Qt dans la partie métier, ce qui n'est pas un mal en soit^^

Édité par epso

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte