8年前なんだかんだでこれが初質問になります。C++には基底クラスのポインタ→派生クラスのポインタ、というダウンキャストを行うdynamic_castがありますよね。これについてなのですが、ネットで情報を集めたところ、どうやら基本的に推奨されない機能だということが判りました。確かに、実行時判定する分遅いですし、そのために無駄な容量を食うことりもなります。自分で安全確保の機能を作って(容量は諦めるとして)static_castをすればいいんじゃね、と思ったのですが、さらに調べると、ダウンキャストそれ自体が推奨されないものだと判りました。ダウンキャストをする事にも一応意味はあるし、普通にvirtualつき関数を作るのとも棲み分けはできると思うのですが、何故なのでしょう。それなりのオブジェクト指向の思想的理由があるような気がするのですが、思いあたる節がありません。どなたかお教えください。さん遅いと言っても特に気にするほどではないと思います。使ってキャストすることは可能ではありますが多態性が失われてしまうように思います。本当に安全が確保され、かつ意味があるのであれば使えばいいと思いますが、やはり色々とバグの原因になったりもすると思いますので推奨はされないのではないでしょうか。通常はアップキャストしてしまったら、基底クラスのポインタもしくは参照からはどの派生クラスからアップキャストされたものかわからないような使い方をするものなのでは?(アップキャストしたら抽象化されてしまうから、ふつうそのキャストは非可逆になるはず。確実にダウンキャストが安全でチェック機構が要らないような実装もありそうな気がします。endl;}・・・まぁvirtualを使わない分サイズは減るのかな?w汎用性はすごく低そうですが・・・その2基底クラスのプロテクテッドなメンバに派生クラスからアクセスする。こっちの方が幾分か実用的な気もします。);b.Execute();}※メモリーリークへの突込みはなしでw実は自分の場合こっちの方は結構使いますが、若干罪の意識に駆られながら使ってたりします・・・これ使うと有限状態機械の設計が超楽ちんなんですよね。8年前DVDMさん、ご意見ありがとうございます。考えていたため若干放置っぽくなってしまいました。そもそもどういった場合にダウンキャストが必要になるのでしょうか?ええとですね、継承でまとめたいクラスがあるけど、それぞれが独自にメンバをたくさん持ってたりする時、ですかね。いや、だったら最初から継承させるな、という感じですが。結局悩んだ末、今はダウンキャストなしの設計にできました(しました)。考えると、確かにダウンキャストを使うってのはどこかが間違ってる証ですよね。僕はGRAMさんみたいにテンプレートを活用したやり方は頭がついていけない(有限機械状態(゚д゚)?みたいな)のでやりませんが、大変参考になりました。ダウンキャストを例にとっても色んな方法があるもんですね。C++の奥の深さに絶望させられました。勉強のしがいもあるのですが。ミクプラは自由にリンクできます。