嘿,我真的想让TinyXML至少读取一个文件,但它说“main.cpp:8:错误:'TiXMLDocument'未在此范围内声明”
这是我使用的代码:
TiXMLDocument("demo.xml");
理想情况下,我想阅读能够读取文件并输出XML,所以我也试过这个代码,我在网上找到了教程
#include <iostream>
#include "tinyxml.h"
#include "tinystr.h"
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 ); // defined later in the tutorial
}
else
{
printf("Failed to load file \"%s\"\n", pFilename);
}
}
int main(void)
{
dump_to_stdout("demo.xml");
return 0;
}
我现在得到的错误是:
main.cpp: In function ‘void dump_to_stdout(const char*)’:
main.cpp:13: error: cannot convert ‘TiXmlDocument*’ to ‘const char*’ for argument ‘1’ to ‘void dump_to_stdout(const char*)’
如果它有助于我在Mac上,我试过在终端和textmate编译。我还尝试在编译main.cpp之前单独编译TinyXML的cpp文件,我不知道为什么我不能打印出demo.xml,更不用说读它了。
答案 0 :(得分:1)
TiXmlDocument
,而不是TiXMLDocument
dump_to_stdout
未声明的重载,因此编译器假定您要调用采用const char *
并失败的版本。答案 1 :(得分:0)
dump_to_stdout( &doc ); // defined later in the tutorial
这是你的问题。
dump_to_stdout
需要const char*
,而TiXmlDocument绝对不是。dump_to_stdout
就是你所在的那个,因此就是错误。在此功能之前转发声明您想要的那个,例如:void dump_to_stdout(TiXmlDocument*);