3

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

4

2 回答 2

1
  1. TiXmlDocument,不是TiXMLDocument
  2. 您不能调用尚未声明的函数。由于您尝试调用 的未声明重载dump_to_stdout,因此编译器假定您要调用采用const char *和失败的版本。
于 2011-01-25T11:33:06.520 回答
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*);
于 2011-01-25T11:33:18.580 回答