Erreur compile SetText.

a marqué ce sujet comme résolu.

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.

+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?

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...
}

+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^^

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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