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でのimに役立つ場合、iveは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_stdoutTiXmlDocumentconst char*は絶対にありません。
  2. あなたはすでにその関数いるので、ファイルが読み込まれると仮定すると、無限の再帰が発生します。
  3. TiXmlDocument を受け取るものを後で定義してもかまいません。この時点で、dump_to_stdout存在するのはあなたがいるものだけなので、エラーになります。この関数の前に、必要なものを前方宣言します。たとえば、次のようになります。 void dump_to_stdout(TiXmlDocument*);
于 2011-01-25T11:33:18.580 に答える