在網上找到了一個小的例子,是用來實現函數的遞歸調用的,代碼詳情如下:
C/C++ code
void dump_to_stdout(const char* pFilename)
{
TiXmlDocument doc(pFilename);
bool loadOkay = doc.LoadFile();
if (loadOkay)
{
printf("\n%s:\n", pFilename);
dump_to_stdout( &doc ); // 此行報錯
}
else
{
printf("Failed to load file \"%s\"\n", pFilename);
}
}
如上代碼,在VS2008裏調試這個例子時報錯:
error C2664: “dump_to_stdout”: 不能將參數 1 從“TiXmlDocument *”轉換爲“const char *”
應該如何解決此問題,實現函數的遞歸調用呢?
是因爲漏掉了dump_to_stdout( &doc );這個函數,因爲這個函數需要在後面進行聲明,如下是修改後的完整代碼:
C/C++ code:
void dump_to_stdout( TiXmlNode* pParent, unsigned int indent = 0 )
{
if ( !pParent ) return;
TiXmlNode* pChild;
TiXmlText* pText;
int t = pParent->Type();
printf( "%s", getIndent(indent));
int num;
switch ( t )
{
case TiXmlNode::DOCUMENT:
printf( "Document" );
break;
case TiXmlNode::ELEMENT:
printf( "Element [%s]", pParent->Value() );
num=dump_attribs_to_stdout(pParent->ToElement(), indent+1);
switch(num)
{
case 0: printf( " (No attributes)"); break;
case 1: printf( "%s1 attribute", getIndentAlt(indent)); break;
default: printf( "%s%d attributes", getIndentAlt(indent), num); break;
}
break;
case TiXmlNode::COMMENT:
printf( "Comment: [%s]", pParent->Value());
break;
case TiXmlNode::UNKNOWN:
printf( "Unknown" );
break;
case TiXmlNode::TEXT:
pText = pParent->ToText();
printf( "Text: [%s]", pText->Value() );
break;
case TiXmlNode::DECLARATION:
printf( "Declaration" );
break;
default:
break;
}
printf( "\n" );
for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling())
{
dump_to_stdout( pChild, indent+1 );
}
}
此文由Web開發之答疑解惑源www.znjcx.com整理,如需轉載,請註明原文出處:http://www.znjcx.com/html/y2012/3478_why-cant-with-tinyxml-parsing-xml-vs-const-char-conversion.html,謝謝!
更多熱門文章:
1.如何統計一個頁面打開所需要的時間?(http://www.znjcx.com/html/y2012/2404_time-needed-to-open-a-page-of-statistics.html)
2.ASP哈希表類(http://www.znjcx.com/html/y2012/2401_asp-hash-table-class.html)
3.用戶管理問題(http://www.znjcx.com/html/y2012/2399_user-management.html)