- AppはResourceでもあるのでmainより前に初期化される。
- クラスをstaticにインスタンス化してもコンストラクタが呼ばれるまでメンバの初期値は不定
- 基本型や構造体をstaticに配置すると初期値は静的に設定される
みたいな条件があるのでAppで全部やるのもいいが、構造体をstaticに置いてノードから操作するような設計を試してみようかと。
template<typename T> struct IDArray{ unsigned used; IDArray::Node* array; unsigned size; class Node{ public: Node(IDArray& arr) : id(arr.used++), body(&arr){ //mallocしたりreallocしたりした領域を確保したりthisを所定位置に設定したり }; ~Node(){ //返却と配列の所定位置のクリア }; protected: const unsigned id; private: IDArray& body; }; };
こんな感じで。
あー、コンストラクタは要らなくてもstructにはならんか...[]演算子は必要だ。とりあえずやってみてダメポなら諦めてApp内でやるかー。
返信削除大丈夫そうなのでそのまま修正した。Nodeを使う方法はtoolboxのcontainerでは共通の方法なのでそのうちやろうと思ってたのだが、ついでにクリアできた。
返信削除toolboxは→https://github.com/tarosuke/toolbox
返信削除