TinyXML #include问题......使用库

时间:2011-01-25 11:26:42

标签: c++ terminal textmate libraries tinyxml

嘿,我真的想让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,更不用说读它了。

2 个答案:

答案 0 :(得分:1)

  1. 它被称为TiXmlDocument,而不是TiXMLDocument
  2. 您无法调用尚未声明的函数。由于您尝试调用dump_to_stdout未声明的重载,因此编译器假定您要调用采用const char *并失败的版本。

答案 1 :(得分:0)

dump_to_stdout( &doc ); // defined later in the tutorial

这是你的问题。

  1. dump_to_stdout需要const char*,而TiXmlDocument绝对不是。
  2. 你已经 那个函数了,所以假设文件加载你就会有无限递归。
  3. 以后定义的TiXmlDocument并不重要。此时,唯一存在的dump_to_stdout就是你所在的那个,因此就是错误。在此功能之前转发声明您想要的那个,例如:void dump_to_stdout(TiXmlDocument*);