2

(クラス A) の 2 つのポインターを、パラメーターを介してその派生クラス (クラス B) に渡します。

B で宣言されたメソッドを呼び出せるようにするには、ポインターの 1 つをクラス B にする必要があります。

どうすればいいですか?

静的キャストでは、逆の方法しかできませんか? (B は型 A に動的にキャストされます)。C スタイルのキャストをしないように言われました。キャストの再解釈は危険ですか?

私が考えることができる唯一の他のものは、静的キャストです。それは私がここで必要とするものですか?

ありがとう

4

2 に答える 2

3

この目的には、static_castまたはのいずれかを使用できます。dynamic_cast2 つの違いはdynamic_cast、ポインターが実際に派生クラスのオブジェクトを指しているかどうかを実行時にチェックすることです (これには、基本クラスに少なくとも 1 つのvirtualメンバー関数 (デストラクターを含む) が必要です)。キャストが可能であると確信できる場合はstatic_cast、実行時チェックなしでキャストを行います。

構文は次のとおりです。

B* p_b = static_cast< B* >( p_a );

// or:

B* p_b = dynamic_cast< B* >( p_a );
于 2013-05-04T02:53:24.610 に答える