参照のキャスト?は問題ありますか?

[戻る]
木作 2006/05/16(火) 12:26:48
VC6のMFCで質問です。OSはXP。
CFileの派生クラスCMyFileを作ったとします。
CMyFileではOpenをオーバーライドしてます。
CMyFile fp;
CFile *pF = &fp;
CMyFile &fp2 = (CMyFile &)*pF;
このようなことはありですか?
エラーは出ませんが不安ではあります。

木作 2006/05/16(火) 12:28:53
すいません。補足です。
CMyFile &fp2 = (CMyFile &)*pF;
の後に
fp2.Open(...);//これがちゃんとCMyFileのOpenなのでしょうか?
デバッグ上はCMyFileのソースを通っているようですが...

tetrapod 2006/05/16(火) 12:57:59
A1.問題ありません。
A2.CMyFile::Open になります。

ですが、プログラムとしてあまりにも不細工すぎると思います。
そんな変なことしないですむよう修正することを強く推奨します。
そこら辺、真っ先にリファクタリングの対象となる気がします。

木作 2006/05/16(火) 13:13:50
[[解決]]
レスありがとうございます。
基本クラスから派生クラスに戻すいい方法が思い浮かびませんが
とりあえず問題ないならこのままいきたいと思います。

επιστημη 2006/05/16(火) 13:27:50
安全なdown-castなら dynamic_cast

古いスレッドには追加発言できません。