TinyXML #include проблема ... Использование библиотек - PullRequest
3 голосов
/ 25 января 2011

Эй, я действительно пытаюсь заставить 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.Я также пытался скомпилировать файлы cpp для TinyXML отдельно перед компиляцией main.cpp, и я понятия не имею, почему я не могу распечатать demo.xml, не говоря уже о его чтении.

Ответы [ 2 ]

1 голос
/ 25 января 2011
  1. Он называется TiXmlDocument, а не TiXMLDocument
  2. Вы не можете вызвать функцию, которую вы еще не объявили.Поскольку вы пытаетесь вызвать необъявленную перегрузку dump_to_stdout, компилятор предполагает, что вы хотите вызвать версию, которая принимает const char * и дает сбой.
0 голосов
/ 25 января 2011
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*);
...