2016-04-15 122 views
0

我願意用SDL製作2D遊戲,我正在關注Shaun Mitchell的書。但是當我試圖編譯我的項目時,我遇到了這種用戶定義類型轉換錯誤的嚴重困難...無法從常量TiXmlString轉換爲常量std :: string&

另外,我對這個主題不熟悉。我看過一些教程並在網上搜索解決方案。

我需要

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

添加到TiXmlString類tinyxmlstr.h?如果是的話,如何實施呢?我應該返回什麼?

The Errors

如果我不定義STL中tinyxml.h(我使用),編譯然後返回一個鏈接錯誤。

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類和實現是一樣的一書中。

最後,如果我在某處發生錯誤,如何正確調試以及在哪裏尋找它?先謝謝你!

+0

將所有相關信息放入您的問題中,而不是將圖像鏈接到其他地方。 – stark

回答

0

錯誤很明顯:非轉換可從const TiXmlStringconst std::string &

this page,如果我沒有錯,沒有從TiXmlStringstd::string

我想你可以寫這樣的方法(酷似value()甚至直接轉換,它會返回const char *

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

,但以這種方式返回的value複印件(那麼回事const std::string,而不是一個普通的std::string,是沒用的),而不是引用。我不知道這是否適合你。

+0

謝謝你解決了一些錯誤。而我就只剩二元運算錯誤,所以我寫了一個運營商=' &TiXmlString運算符=(常量的std :: string及複印件) \t { \t \t收益分配(copy.c_str(),copy.length()) ; \t}'這樣。它的工作,但現在有另一個錯誤 '錯誤錯誤MSB6006:「CL.exe」退出代碼2. \t' –

+0

對不起,但我有太多的信息,能夠找出新的錯誤可能是。我只能告訴你你的'operator ='對我來說似乎是正確的(儘管我會這樣寫)TiXmlString&operator =(const std :: string&copy){assign(copy.c_str(),copy.length()) ; return * this;}') – max66

相關問題