4

オブジェクト ポインターがパラメーターとして渡されるメソッドを作成し、メソッドBase内で派生オブジェクト ポインターにキャストしたいと考えています。

void func( const Base* const obj){
    Derived* der = dynamic_cast<Derived*>(obj);
}

ただし、動的キャストは const 指定子をキャストできないため、エラーが表示されます。constしかし、ここで指定子を削除する必要がある理由を理解していません。私がしているのは、ベースポインターの後のオフセット量を指す派生ポインターを作成することだけです。も試しましたが、結果はありません。const Derived* const der = dynamic_cast<Derived*>(obj);

パラメータを として渡すことが重要constです。これどうやってするの?const_cast最初に申請してから申請するという醜い方法でそれを行う必要がありdynamic_castますか? 何か良い方法はありますか?

4

2 に答える 2

7

できないことは、修飾子を. で削除することです。型が多態的 (少なくとも 1 つの仮想関数を持つ) の場合、次のことができるはずです。constdynamic_cast

const Derived *der = dynamic_cast<const Derived*>(obj);
于 2014-05-23T04:20:28.897 に答える