CTypedPtrArray の要素のダウンキャスト – プログラミング – Home

通知
すべてクリア

[解決済] CTypedPtrArray の要素のダウンキャスト


DOSKOI-PANDA
 DOSKOI-PANDA
(@DOSKOI-PANDA)
ゲスト
結合: 22年前
投稿: 55
Topic starter  

お世話になっております。

Win2K VC++6.0 SP5 MFC使用です。

クラス A を定義後、CTypedPtrArray で CAArray を定義。
(typedef CTypedPtrArray<CPtrArray, A*> CAPtrArray;)

クラス A から A1, A2 を派生。A1, A2 で new したあと、
Add で CAPtrArray へ追加。

で参照するとき、

CA1* pA1 = dynamic_cast<CA*>(oAPtrArray,[i]);

とやると例外が発生してしまいます。
(bad_castではなく、Access Violation)
デバッガで見ると、ポインタの中身は正しく入っているようですが……。

クラスAが static データメンバを持っているのがいけないのかな?

上記のような経験をお持ちの方、御教唆いただけると幸いです。


引用未解決
トピックタグ
DOSKOI-PANDA
 DOSKOI-PANDA
(@DOSKOI-PANDA)
ゲスト
結合: 22年前
投稿: 55
Topic starter  

すいません、肝心なとこを書き間違えました。

> CA1* pA1 = dynamic_cast<CA*>(oAPtrArray,[i]);

CA1* pA1 = dynamic_cast<CA1*>(oAPtrArray,[i]);

です。
実際のソースコードはもちろん下でやってますが、例外が発生してしまいます。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> oAPtrArray,[i]

この ',' はどういう意味ですか?


返信引用
DOSKOI-PANDA
 DOSKOI-PANDA
(@DOSKOI-PANDA)
ゲスト
結合: 22年前
投稿: 55
Topic starter  

> > oAPtrArray,[i]
>
> この ',' はどういう意味ですか?

すいません、それも書き間違いです。
実際は、oAPtrArray[i]です。

RTTIを有効にして行ったところうまく行きました。
お騒がせしました。
フライング申し訳ない。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> RTTIを有効にして行ったところうまく行きました。

げ。無効だったワケ?
# なんだかなー


返信引用
DOSKOI-PANDA
 DOSKOI-PANDA
(@DOSKOI-PANDA)
ゲスト
結合: 22年前
投稿: 55
Topic starter  

解決チェック


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました