【質問】リストに関しての要素の持たせ方

リストについて考えれば考えるほど段々意味が解らなくなっきました。

CBULLET1、CBULLET2、CBULLET3 (それぞれは弾クラス)のように
専用のリストクラスを作ってしまう方法があるのですが、
練習がてらに使おうと思った template を使わずじまいに終わってしまうので
さすがに勿体ないなぁと思ってます。

で、疑問が色々出てくるんですが、整理するとこういう感じでした。

■弾クラスは前後のポインタを知っている必要があるのか?
  ・リストクラスなるものに全てを任せ、前後を知る必要はない
  ・弾クラスは前後のポインタを知っている必要がある

例えば、弾クラスにリストクラスを定義(仮に CLIST m_List)し、
弾を生成する関数でこのような関数を呼ぶとします。

void CBULLET1::CreateShot(~){
 諸々処理();
 m_List.PushBack(生成した弾); // リストの末尾に要素を追加
}

このようにすると、CLISTクラス内で生成した弾を最後尾に繋げて行くので
先頭が NULL なら先頭要素とする。
末尾が NULL でなければ末尾要素とする。

では、先頭と末尾の間にある要素の前後のポインタはどこが管理していればいいのか。
という疑問が出ました。
前回はグローバル変数でした。

これをうまいこと管理するにはどうすればいいんでしょう…
こう考えると、弾クラスにはやはり前後の要素を持たせる必要がありそうですよね~


■先頭、末尾要素はどこで管理するのか?
これも前回はグローバル変数でした。

しかし、どこかで先頭・末尾を管理しておいた方が描画したりする時に便利かと思います。
例えば、弾クラスに static で宣言してしまうやり方もあるかもしれませんし、
上に書いたとおり、CLIST が管理する、等々方法はいくつかあると思います。

先頭・末尾はそれぞれの弾クラスで一つずつしかないので
弾クラスに持たせるべきなのか、リストクラスに持たせるべきなのか
…と、ソースを書きながら疑問ばかりで行ったり来たり;


とりあえず、今は template 以前の問題ですね;
こういうのをクラス設計と言うのでしょうか…。
うーん…今日の晩もこれで潰れそうだ;
もういっちょ頑張ってみるか~

とりあえず、ランニングしてこよう。
煮詰まったら何か別のことすればいいって誰か言ってたし!
検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧