ゲッターとセッターを使用して TiXmlElement * を参照するようにプロジェクトを書き直しています。ただし、デバッグ モードに関連していると思われる問題にすぐに遭遇します。
私のクラスのヘッダーからの抜粋:
TiXmlElement *_rootElement;
TiXmlElement *_dialogsElement;
TiXmlElement *_dialogElement;
TiXmlDocument _document;
void setDocument (TiXmlDocument doc) { this->_document = doc; }
void setRootElement (TiXmlElement * element) { this->_rootElement = element; }
void setDialogsElement (TiXmlElement * element) { this->_dialogsElement = element; }
TiXmlDocument getDocument () { return this->_document; }
TiXmlElement* getRootElement () { return this->_rootElement; }
TiXmlElement* getDialogsElement () { return this->_dialogsElement; }
クラス コンストラクターからの抜粋:
DCXML::DCXML(const char *dialogMark,const char *dialogName,TiXmlDocument doc) {
...
this->setDocument(doc);
this->setRootElement(this->getDocument().FirstChildElement("dcxml"));
this->setDialogsElement(this->getRootElement()->FirstChildElement("dialogs"));
クラスのインスタンス化からの抜粋:
TiXmlDocument doc(input.gettok(2,"\"").to_chr());
bool dcxmlFile = doc.LoadFile();
...
DCXML *dcxml = new DCXML(input.gettok(2).to_chr(),input.gettok(3).to_chr(),doc);
さて、奇妙な部分です。これは、
this->setDialogsElement(this->getRootElement()->FirstChildElement("dialogs"));
コンストラクターで。
->FirstChildElement("dialogs") は、デバッグ モードのときに VS2008 で "CXX0039: エラー: シンボルがあいまいです" というエラーをスローします。
奇妙な点は、IntelliSense が FirstChildElement メソッドを検出し、コンパイラがエラーをスローしないことです。
さらに奇妙なのは、リリース モードでは、ダイアログ要素の取得に黙って失敗することです。
私が間違っていることは何ですか?または、TiXmlElement* のゲッター セッター ラッパーの実装に成功した場合は、私にもその方法を教えてください!.
完全なリファレンスとして、XML ファイルからの抜粋を次に示します。
<?xml version="1.0" encoding="utf-8"?>
<dcxml>
<dialogs>
<dialog
name="mediaplayer"
center=""
w="300"
h="400"
caption="Mamp 4.0 BETA"
border="btmnzy">
</dialog>
</dialogs>
</dcxml>
私は行き止まりにいるので、フィードバックをいただければ幸いです:)