13:タスク処理を実装する(3)
それでは、CGameObjectクラスを管理するためのリストをプログラムに組み込むことにしましょう。リストにCGameObject以外の情報もあると管理がさらに簡単になります。今回は以下の情報が格納されたデータをリストに追加していくことにします。
- CGameObjectのポインタ
- 実行順位(キャラクターの重ね順などに柔軟に対応できる)
- オブジェクトの名前(文字列でオブジェクトを検索できる)
- リストから削除された場合、CGameObject*を
deleteするかどうか
(newで作成したオブジェクトを自動で削除できる)
リストにデータを追加するための関数を作成します。同じ名称の関数が2つ用意されていますが、引数のデータが異なっているのであれば、コンパイラが状況に合わせた関数を自動で参照してくれます。これを関数の多重定義(オーバーロード)といいます。また、外部のstatic関数からもアクセスできるように、これらの関数はstatic属性にしています。 41行目に見慣れない関数「strcpy_s」が登場しています。これは文字列複製関数「strcpy」を拡張したもので、コピーできる上限をあらかじめ設定しておくことで、メモリの破壊を未然に防ぐ機能が追加されています。現時点でこの関数はマイクロソフト社の開発環境しか対応していませんが、ISOでも策定段階にはいっているので、近い将来は様々なCコンパイラが対応することになるでしょう。
