2016-04-15 6 views
0

Ich bin bereit, ein 2D-Spiel mit SDL zu machen und ich folge einem Buch von Shaun Mitchell. Aber ich hatte ernsthafte Schwierigkeiten mit diesem benutzerdefinierten Typ Umwandlung Fehler beim Versuch, mein Projekt zu kompilieren ...Const TiXmlString kann nicht in const konvertiert werden std :: string &

Auch ich bin mit diesem Thema nicht vertraut. Ich habe mir einige Tutorials angeschaut und im Internet nach einer Lösung gesucht.

Muss ich

operator std::string&() const { return ???;} 

zum tinyxmlstr.h in TiXmlString Klasse hinzufügen müssen? Wenn ja, wie wird es umgesetzt? Was soll ich zurückgeben?

The Errors

Wenn ich nicht definieren, die STL (was ich verwende) in tinyxml.h, der Compiler gibt dann eine Verknüpfung Fehler.

Error 19 error LNK2019: unresolved external symbol "public: virtual __cdecl TiXmlNode::~TiXmlNode(void)" ([email protected]@[email protected]) referenced in function "public: virtual __cdecl TiXmlDocument::~TiXmlDocument(void)" ([email protected]@[email protected])

Without STL

StateParser Klasse und Umsetzung ist das gleiche wie die in dem Buch.

Schließlich, wenn ich irgendwo einen Fehler habe, wie man es richtig debuggt und wo man danach sucht? Vielen Dank im Voraus!

+0

Setzen Sie alle relevanten Informationen in Ihre Frage, nicht in Bilder, die woanders verlinkt sind. – stark

Antwort

0

Der Fehler ist klar: Keine Konvertierung verfügbar von const TiXmlString bis const std::string &.

Nach this page, wenn ich nicht irre, gibt es nicht einmal eine direkte Umwandlung von TiXmlString zu einem std::string

Ich nehme an, Sie eine Methode wie diese schreiben können (genau wie die value(), die ein const char * zurückkehren

)
std::string valueStr() cont 
{ return value.c_str(); } 

aber auf diese Weise eine Kopie von value zurückkehren (so eine const std::string zurückzukehren, anstatt eine einfache std::string, ist nutzlos), keine Referenz. Ich weiß nicht, ob das für dich in Ordnung ist.

+0

Danke das behoben einige der Fehler. Und ließ mich nur mit dem binären Operator Fehler, so schrieb ich einen Operator = 'TiXmlString & operator = (const std :: string & copy) \t { \t \t Rückkehr assign (copy.c_str(), copy.length()) ; \t} 'so. Es funktionierte, aber jetzt gibt es einen anderen Fehler Fehler Fehler MSB6006: "CL.exe" mit Code 2 beendet. \t ' –

+0

Entschuldigung, aber ich habe zu wenig Informationen, um herauszufinden, wo der neue Fehler sein kann . Ich kann Ihnen nur sagen, dass Ihr 'operator =' mir richtig erscheint (obwohl ich das so geschrieben hätte) TiXmlString & operator = (const std :: string & kopieren) {assign (copy.c_str(), copy.length()) ; return * this;} ') – max66