-3

C++のstatic_castに関連する質問があります。

私は持っています :

  • クラスBとその派生クラスD
  • クラスBDataとその派生クラスDData

コードは次のとおりです。

class B 
{
  public:
    B(BData * pb)
    {
    }
};

class D : public B 
{
  public:
    D(DData * pd) : B( static_cast<BData*>(pd))
    {
    }
};

コンパイルでは常にエラーが発生します。

error C2440: 'static_cast' : cannot convert from 'DData *' to 'BData *',
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

誰かが理由を知っていますか?

4

1 に答える 1

2

static_castコンストラクターで使用できませんか?

static_castコンストラクターで使用できます。

エラーメッセージは、エラーが発生した理由を正確に示しています。
無関係のクラス(DDataおよびBData)をキャストしようとしています。でそれを行うことはできませんstatic_cast

ちなみに、コード例とエラーメッセージが一致しない場合は、実際のコードを投稿してください。
あなたの実際のコードがあなたが説明した通りであるなら、それはうまくいくはずです。

于 2012-09-28T11:17:21.563 に答える