Foo* foo = &dynamic_cast<Foo&>(*ptrFoobase);
を使用する理由はありますか?キャストが間違っているとbad_castをスローし、ポインタが0になっているかどうかをチェックします。参照にdynamic_castのアドレスを使用しない理由は何ですか?
0
A
答えて
1
ptrFoobase
がnullの場合は動作しません。
3
あなたはそれをしてはいけないという厳しい普遍的な理由はありませんが、それは一見醜いと読みにくいです。
例外をスローすることが適切であると判断した場合は、おそらく他のデザインの選択肢に戻ってください。なぜポインタが必要なのですか?あなたが参照を貼り付けるなら、問題はありません:Foo & foo = dynamic_cast<Foo&>(fooBaseRef);
。
個人的には、C++で裸のポインタがあれば、何らかのレガシーな考え方になっているので、おそらくヌルチェックを追加して手動で投げてください。一方、慣用的で現代的なC++を使いたい場合は、参考までにすべてを参考にして、例外を無料で取得します。
関連する問題
- 1. std :: futureのパラメータで参照を使用できない理由
- 2. Angular CLIを使用しない理由は何ですか?
- 3. AnyObjectを使用しない理由は何ですか?
- 4. ゼロMACアドレスは何を参照していますか?
- 5. Perlでtypeglobsを参照として使用できる理由
- 6. 単純な型を参照渡ししない理由は?
- 7. パスワードハッシュには何を使用しますか? jBCryptを使用しない理由は何ですか?
- 8. コマンドライン - 「タッチ」を使用できない理由は何ですか?
- 9. 'this'がグローバルオブジェクトではないオブジェクト 'obj'を参照する理由
- 10. リソース参照にUrl.Contentを使用する理由
- 11. DLLへの参照を追加する理由は何ですか?
- 12. のdynamic_castと右辺値参照
- 13. すべてのクエリでストアドプロシージャを使用しない理由は何ですか?
- 14. iOS開発にC++ 0xを使用しない理由は何ですか?
- 15. スーパークラス参照変数を使用してサブクラスの新しいメソッドにアクセスできない理由
- 16. GCCが参照用にstd :: optionalを拒否する理由は?
- 17. HTML 5 doctypeの使用を開始しない理由は何ですか?
- 18. Web参照とサービス参照の違いは何ですか?
- 19. SQLAlchemyよりSQLObjectを使用しない理由は何ですか?
- 20. 参照されたプロジェクトが参照アセンブリを経由しない
- 21. 私は更新方法を使用できない理由は何ですか?
- 22. 実行中に物理アドレスが同じ理由は何ですか?
- 23. システムコールGetIpNetTableの物理アドレスが8バイト(6ではない)の理由は何ですか?
- 24. l18nにドメインを使用する理由は何ですか?
- 25. C++のif文でポインタとその逆参照を使用する理由
- 26. C++での参照でポインタを渡す理由は?
- 27. Linux用のDirectX APIがない理由は何ですか?
- 28. dynamic_castから非const参照を取得する
- 29. は、STDでiterator->第二に割り当てる理由を私は理解していない参照
- 30. ポインタの参照とアドレスを理解しようとする
これは明らかです – piotr