C++によるタスクシステムに関する質問(少々面倒です)
Posted: 2008年11月26日(水) 03:47
こちらでは、はじめて質問させていただきますACです。
C++については大体基本はわかってるぐらいの知識です。
DxLibを使用してゲームのひな形でも作ろうなと思い、C++でリストを使ってタスクシステムを実装したのですが、一部挙動が不明のところがあり、いくら考えても分からず気になって気になってしょうがないので、質問するしだいに至りました。
ここには全てを書きにくいいのでソースをアップしましたのでそちらを参照しながら見ていただけたらと思います。
アドレス:http://www1.axfc.net/uploader/He/so/163203
ダウンロード&解凍パス:sitsumonyo
既に実行できる状態のVC2008のプロジェクトです(DxLibのインクルードとリンクはそちらの方でお願いします)。
まず、タスクシステムについては、これはhttp://www.tnksoft.com/さんのサイトの
http://www.tnksoft.com/reading/classgam ... 01/011.php
を参考にしています(ほぼまんまですが・・・)。
タスクに関する全処理はMaster.cppに書かれています。
さて本題ですが、不明な点はOpening.cppにあります。
簡単にいえば使いたいときに AddTask(new クラス名()...) でタスクに追加して、いらなくなったら RemoveTask(インスタンス) で削除すればよいのですが、Opening.cpp内でRemoveTask(this)のようにしてタスクを消したところ、エラーが出てしまいました(色々試しましたがOpening.cpp内でなくてもエラーが起こるようです)。
リストの要素のerase時にエラーが出てるらしく、どうもイテレータによる参照が変な感じであることがわかったのですが、なぜおかしくなるのかがどうしてもわかりませんでした。
少々面倒な質問ですが、エラーのでる理由のわかる方は教えていただけたら幸いです。よろしくお願いします。
C++については大体基本はわかってるぐらいの知識です。
DxLibを使用してゲームのひな形でも作ろうなと思い、C++でリストを使ってタスクシステムを実装したのですが、一部挙動が不明のところがあり、いくら考えても分からず気になって気になってしょうがないので、質問するしだいに至りました。
ここには全てを書きにくいいのでソースをアップしましたのでそちらを参照しながら見ていただけたらと思います。
アドレス:http://www1.axfc.net/uploader/He/so/163203
ダウンロード&解凍パス:sitsumonyo
既に実行できる状態のVC2008のプロジェクトです(DxLibのインクルードとリンクはそちらの方でお願いします)。
まず、タスクシステムについては、これはhttp://www.tnksoft.com/さんのサイトの
http://www.tnksoft.com/reading/classgam ... 01/011.php
を参考にしています(ほぼまんまですが・・・)。
タスクに関する全処理はMaster.cppに書かれています。
さて本題ですが、不明な点はOpening.cppにあります。
簡単にいえば使いたいときに AddTask(new クラス名()...) でタスクに追加して、いらなくなったら RemoveTask(インスタンス) で削除すればよいのですが、Opening.cpp内でRemoveTask(this)のようにしてタスクを消したところ、エラーが出てしまいました(色々試しましたがOpening.cpp内でなくてもエラーが起こるようです)。
リストの要素のerase時にエラーが出てるらしく、どうもイテレータによる参照が変な感じであることがわかったのですが、なぜおかしくなるのかがどうしてもわかりませんでした。
少々面倒な質問ですが、エラーのでる理由のわかる方は教えていただけたら幸いです。よろしくお願いします。