Aktuelle Zeit: 17.04.2021, 04:12

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Ausgabeformat ändern
BeitragVerfasst: 20.03.2010, 11:45 
Offline

Registriert: 10.03.2010, 20:15
Beiträge: 19
Hi Leute,

da ich noch nicht so lange mit cpp arbeite bin ich noch nicht mit diesen Template Klassen/Funktionen ins reine gekommen...

für mich bedeutet folgendes aus der IrrXML API Doku, dass ich mir das Ausgabeformat von getAttribute* selbst wählen kann.

Code:
irr::io::IIrrXMLReader< char_type, super_class >
virtual const char_type *    getAttributeValue


Kann ich es irgendwie bewerkstelligen dass alle Rückgaben von Typ wchar_t* sind? Und vor allem wie?

cuz rotten_corpse


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Ausgabeformat ändern
BeitragVerfasst: 20.03.2010, 13:42 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Ja das kannst du:

Code:
#include <irrXML.h>

IrrXMLReader* xml = createIrrXMLReader("config.xml");


Standardrückgabe format ist nämlich genau const wchar_t*. Von daher damit machst du nichts falsch. Ansonsten machst du einfach einen Aufruf in dem du in der Template eben deine Wunschklasse einträgst:

Code:
IrrXMLReader<const char*>* temp = createIrrXMLReader("temp.xml");
//temp->getAttributeValue() wird später vom typ const char* sein

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Ausgabeformat ändern
BeitragVerfasst: 20.03.2010, 19:12 
Offline

Registriert: 10.03.2010, 20:15
Beiträge: 19
Okay wenn ichs so mache:

Code:
IrrXMLReader* xmlrdr = createIrrXMLReader("highscore.xml");

meckert der Compiler dass er bei
Code:
s.name = xmlrdr->getAttributeValue("name");

nicht von "const char*" nach "wchar_t*" konvertieren kann

wenn ich nun die instanz vom reader so erzeuge
Code:
IrrXMLReader<wchar_t*>* xmlrdr = createIrrXMLReader("highscore.xml");

meckert er, dass irr::io::IrrXMLReader kein template ist ...

Hier mal mein ganzer Code nach erster Variante:

Code:
#include <irrXML.h>

struct Score
{
   wchar_t* name;
   int score;
   int ctrl;     
};

class Highscore
{
      private:
        Score* data;
        int d_size;
        void grow(int nsize)
        {
             Score* ndata= new Score[nsize];

             for(int i=0;i<d_size;i++)
               ndata[i]=data[i];

             delete[] data;
             
             d_size=nsize;
             data=ndata;
        };
        void sort()
        {
             Score h;
             for(int i=0;i<d_size;i++)
               for(int j=0;j<(d_size-1);j++)
                 if(data[j].score<data[j+1].score)
                 {
                       h=data[j];
                       data[j]=data[j+1];
                       data[j+1]=h;
                 }
        }       
      public:
        Highscore()
        {
              data = new Score[0];
              d_size = 0;     
             
              Score s;
              int nctrl;
             
              IrrXMLReader<wchar_t*>* xmlrdr = createIrrXMLReader("highscore.xml");
              while(xmlrdr && xmlrdr->read())
              {
                 switch(xmlrdr->getNodeType())
                 {
                      case EXN_ELEMENT:
                         if (!strcmp("score", xmlrdr->getNodeName()))
                         {
                             s.name = xmlrdr->getAttributeValue("name");
                             s.score = xmlrdr->getAttributeValueAsInt("points");
                             s.ctrl = xmlrdr->getAttributeValueAsInt("ctrl");
                             nctrl = /*(int)s.name */ s.score;
                             if (s.ctrl = nctrl)
                             {
                                grow(d_size+1);
                                data[d_size-1]=s;       
                             }
                         }
                      break;
                 }
              }
             
              delete xmlrdr;
              sort();
        };
        ~Highscore()
        {
              delete[] data;   
        }
        int Size()
        {
              return (d_size<16?d_size:16);
        };
        Score& operator[](int index)
        {
             assert(index>=0);
             assert(index<d_size);
             return data[index];
        };
};


Wo liegt jetzt mein Fehler?!

cuz rotten_corpse


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de