- タスクシステム
79 :名前は開発中のものです。[sage]:2011/05/06(金) 23:29:54.19 ID:tdzmLgDZ - まーC++で一番簡単なのは、
template< typename _t > &obj_list(){ static std::list< _t * > inst; return inst; } とかやって、テンプレートにシングルトンの型リスト作ってもらって、 obj.itr = obj_list< obj_t >().push_back( &obj ); って感じで型リストに登録して、 for( std::list< obj_t *>::iterator itr=obj_list< obj_t >().begin(); itr!=obj_list< obj_t >().end(); ++itr ) { /*処理*/ } って感じで型ごとにforeach回してやりたい処理して、 obj_list< obj_t >().erase( obj.itr ); って感じで登録削除する、やり方かなぁ。 処理の優先順位って、実際には型にくっついてる場合が多いし、型ごとのリストで十分なことが多い。 for文が煩雑に思えるのなら、マクロ使えばいいし、 attachやdetachも、テンプレート関数使えば、型推論が効くし、 コールバックにならないから、引数固定になることもないし、 型ごとにリスト持つからダウンキャストも発生しないし、 制御フローは書いた順そのものだから、可読性も高い。 手っ取り早くゲームを作りたいホビープログラマには打って付けだと思う。
|
|