2017年6月4日日曜日

さて、IDの生成をどうしようかと考えているわけだが...。

  • 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;
  };
};
こんな感じで。

3 件のコメント:

  1. あー、コンストラクタは要らなくてもstructにはならんか...[]演算子は必要だ。とりあえずやってみてダメポなら諦めてApp内でやるかー。

    返信削除
  2. 大丈夫そうなのでそのまま修正した。Nodeを使う方法はtoolboxのcontainerでは共通の方法なのでそのうちやろうと思ってたのだが、ついでにクリアできた。

    返信削除
  3. toolboxは→https://github.com/tarosuke/toolbox

    返信削除

引っ越すことにした。

引っ越し先。 見えるかな。