2016-04-15 121 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

相关问题