24時間プログラミング 22時間目 〜 仕様変更のフィールド
5時からし〜!
いやー、なんというか、私のつくりがヘタというか。 前々から問題になっていたことが今、結構強めに問題になってます。
- クラスAが、クラスBの 内部情報を利用 する為 #include している。
- クラスBの定義で、描画用クラスCのヘッダー を #include している。
- クラスCはクラスAに本来必要とされないのに、コンパイラ的には必要とされてしまう。
クラスBが「内部情報保持しつつ描画用コードを兼ねている」ってのが悪いんじゃないかと個人的には思っています。 Document and View スタイルを完全無視 というか、MVC を完全無視と言うか。 (…いやまぁ言ってることが正しい自信は無いんですが…(ぉ^^;)
内部情報と描画用コードが上手く分離できれば A と C の関係は切り離せるのに…
…とはいえ、これらの考え方は何となく解るんですが、実際ゲームで利用するとなるとどーすりゃいいんだろうなぁ…ってのが正直な所です。
Viewする時に利用するデータは、Document にあるわけですから、View が Document にデータを取りに行かなくてはならない……って、なんか逆じゃね? Document が更新されたら View に更新されたデータを通知する話なハズです。
とはいえ、ぶっちゃけ動けばいいわけですから、柔軟に考えて、View が取りに行くって話にするべきかー…ということで、頑張って Document と View を別のクラスに分けたとしても、Document 定義してるヘッダーで View 用のヘッダー include しちゃうと、結局描画用のヘッダーも include されるような気がするし…。
うーん。
View 用のクラスを、Document クラスの頭で先行宣言してポインタを保持、document の cpp で View を #include して new してインスタンスをつくる…とか?
#include 関係については問題解決できるんです…が…
綺麗に実装できるのかなぁ…。^^;
デザパタ本でも見るかのぅ…。