dynamic_cast
の例外処理を使用しているときに問題が発生しました。常にbad_cast
を返していません。その後、bad_castは常にdynamic_castからスローされません
derived d1 = dynamic_cast <derived &> (base);
:d1
はnullptr
を返されて、私は次の文をしようとした場合、コンパイラは
derived *d1 = dynamic_cast <derived *> (&base);
を警告私を示したがされているが
以下の文は、bad_cast私を投げないですstd :: bad_castをスローします
私は論理に何かを見逃していますか?クラスは多型です。
[この 'dynamic_cast'リファレンス](http://en.cppreference.com/w/cpp/language/dynamic_cast)から:"キャストが失敗し、new_typeがポインタ型の場合、そのポインタはnullポインタを返しますタイプ。キャストが失敗し、new_typeが参照型の場合は、std :: bad_cast型のハンドラに一致する例外がスローされます。 –
この点は私が が見つからないことを示しています。 –
マニュアルを読むのと同じくらい離れているだけです... ;-) –