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