0

コンパイラ(g ++)がこのコード行について文句を言うのはなぜですか?

    XalanNode *docElement = static_cast<XalanNode*> (docBuilder_->getDocument()->getDocumentElement());

コンパイラから得られるエラーは次のとおりです。

エラー:タイプ `amxalanc_1_6 :: XalanElement*'からタイプ`amxalanc_1_6::XalanNode*'へのstatic_castが無効です

static_castがない場合、コンパイラは次のように出力します。

エラー:初期化時に `amxalanc_1_6 :: XalanElement*'を`amxalanc_1_6::XalanNode*'に変換できません

XalanElementクラスは次のように定義されます。

class XALAN_DOM_EXPORT XalanElement : public XalanNode

ドキュメントには、XalanNodeがXalanElementから派生する必要があることも示されています。これは、 XalanElementクラスリファレンスを参照してください。

XalanDocument.hpp内では、getDocumentElement()のメソッドシグネチャは次のとおりです。

virtual XalanElement* getDocumentElement() const = 0;
4

1 に答える 1

2

ほとんどの Xalan ヘッダーは、クラスへのポインターを取得または返す関数を宣言している場合でも、定義していないクラスの前方宣言のみを使用します。(これは一般的で良い方法です。)

XalanElementコンパイラが から派生した事実を確認するには、 を定義するヘッダーをXalanNode明示的に指定する必要があります。#includeXalanElement

于 2012-09-28T06:07:22.847 に答える