通知
すべてクリア
Topic starter
2006年5月16日 12:26 PM
VC6のMFCで質問です。OSはXP。
CFileの派生クラスCMyFileを作ったとします。
CMyFileではOpenをオーバーライドしてます。
CMyFile fp;
CFile *pF = &fp;
CMyFile &fp2 = (CMyFile &)*pF;
このようなことはありですか?
エラーは出ませんが不安ではあります。
Topic starter
2006年5月16日 12:28 PM
すいません。補足です。
CMyFile &fp2 = (CMyFile &)*pF;
の後に
fp2.Open(...);//これがちゃんとCMyFileのOpenなのでしょうか?
デバッグ上はCMyFileのソースを通っているようですが...
2006年5月16日 12:57 PM
A1.問題ありません。
A2.CMyFile::Open になります。
ですが、プログラムとしてあまりにも不細工すぎると思います。
そんな変なことしないですむよう修正することを強く推奨します。
そこら辺、真っ先にリファクタリングの対象となる気がします。
Topic starter
2006年5月16日 1:13 PM
レスありがとうございます。
基本クラスから派生クラスに戻すいい方法が思い浮かびませんが
とりあえず問題ないならこのままいきたいと思います。
2006年5月16日 1:27 PM
安全なdown-castなら dynamic_cast