正直日記



2008/02/24

_ ぎょえーん
また C++ に手を出してた。
3行で書けたよすっげーなぁとか。コンテナだけじゃなくて色々あるのね。

void
TaskGroup::run()
{
  for_each( Tasks.begin(), Tasks.end(), mem_fun(&Task::run) );
  Tasks.remove_if( mem_fun(&Task::is_killed) );
  for_each( Tasks.begin(), Tasks.end(), mem_fun(&Task::draw) );
}
mem_fun の挙動を見ていて思ったけど、ひょっとしてインスタンスのメンバ関数 呼び出しって第一引数に this が入ってるのかしら。だから this を捏造してや ることで、こんなことが出来てしまうと。 なんか理解する順番が逆なような気 もするけど。 しかし delete はどのタイミングですればいいのだろうな。 今は is_killed() でコンテナからの除外判定をすると同時にdeleteしてるけど、 後ほど困りそうな気がするなぁ。shared_ptr でコンテナに入れればいいのか。 -- という話はさておき、絶賛・開発なかだるみ中(すんませんすんません……)の シューティングの話をする。 そろそろ道中を作るのだが、DSもターゲットに入れることを考えると、液晶の残 像がひどいので弾速度の許容範囲を調べておかなければいかん。ので適当なデモ を作ってみた。 弾速度調整君.zip 弾速、発射頻度、弾アニメなんかを実機上で動かしながら変更できたり、デカい キャラを出しまくってみたり出来ます。ひどいソースも入れておきました。 -- また C++ とかの話に戻るのだが、クラスの継承・委譲なんかを繰り返していく と、 thumb コードと arm コードの使い分けが大変だね。thumb から IWRAM の arm を呼んで、そこからまた ROM の thumb を呼んだりすると(thumb コードは longcall 宣言がされてないので)ハングアップする。クラス内では諦めてどち らかに統一するしかなさそうだ。 DS なら基本的にオンメモリだろうし問題ない んだろうなぁ。

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12