CArrayについて2 – プログラミング – Home

通知
すべてクリア

[解決済] CArrayについて2


大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

大三元です。
VC++6.0 XP ダイアログベース

int xxx;

typedef struct{
BYTE aaa;
WORD bbb;
DWORD ccc;
} KATA;

CArray<KATA, KATA> m_def;
CArray<KATA*, KATA*> m_1;
CArray<KATA*, KATA*> m_2;

CArray* zzz;

switch( xxx ){
case 0:
zzz = m_def;
break;
case 1:
case 3:
case 5:
zzz = m_1;
break;
case 2:
case 4:
zzz = m_2;
break;

ポインタに代入して!!
それぞれの要素にアクセスしたいのですが
上記のようにやると
エラーになります。

zzzの型はどのように
宣言すればいいのでしょうか?


引用未解決
トピックタグ
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

CArray<KATA, KATA>* zzz;
zzz = m_def;

CArray<KATA*, KATA*>* zzz;
zzz = m_1;

これでいけるっぽいですね!?
型が違うから同じポインタにはできなそうですね?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> これでいけるっぽいですね!?
いけません。
m_defやm_1はポインタ型ではないです。&をつけないといけないのでは。

> 型が違うから同じポインタにはできなそうですね?
できません。
できたとしても、実際にそれを使うときにどのような型なのか判定するのが必要になり
ます。
(無理やりLONG型にreinterpert_castしてってことはできますが)

実際にどのようなことをしたいのでしょうか?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

ポリモーフィックに書いた方がいい可能性もありそうです。
Blue さんも書かれているように、もう少し「何がしたいのか」を具体的に書いてくださ
い。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

というか
> CArray<KATA, KATA> m_def;
もKATA*にできないのかなぁ。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

>m_defやm_1はポインタ型ではないです。&をつけないといけないのでは。
その通りです。
&付けて書いたつもりだったんですが・・・
抜けていました。
すいません。

>実際にどのようなことをしたいのでしょうか?
m_defには実体が格納されています。
m_1,m_2にはm_defの要素の中から選ばれたインデックスの
ポインタを格納してあります。
xxxの値によりどのメンバの内容を使うか変わります。
この内容をテキストファイルに保存します。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

ちょっとやり方を変えて、
CArray<KATA*, KATA*> m_1;
CArray<KATA*, KATA*> m_2;

CArray<WORD*, WORD*> m_1;
CArray<WORD*, WORD*> m_2;
として、
m_defの配列のインデックスを格納することにしました。
これで、KATAの情報を取得して保存文字列を作成しました。
xxx==0の時は、m_defの情報をから直接KATAの情報を取り出すことにしました。


返信引用
大三元
 大三元
(@大三元)
ゲスト
結合: 18年前
投稿: 54
Topic starter  

解決とします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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