神のクラス

やっぱ、神のクラスって重要だね。ゲームまたはアプリケーションの中のクラスはこのクラスから派生しないとならない。このようなクラスがあれば、メモリリークもすぐに見付かるよね。理想な神のクラスは

  • シンプルで小さい。
  • KISS (Keep It Simple, Stupid)。
  • IDを持たせる。IDはユーザーに任せる。
  • インスタンスを作られたら、自動的にマネジャーに登録する。

クラスの実装は…

class nusObject
{
   friend class nusObjMgr;
public:
   nusObject(unsigned int id = 'NONE');
   virtual ~nusObject();
private:
   unsigned int mIDui;
   nusObject* mpPrev;
   nusObject* mpNext;
};

class nusObjMgr
{
   friend class nusObject;
public:
   static void createInstance(void);
   static void deleteInstance(void);
   static nusObjMgr* getInstance(void);
   void dumpObjectID();
private
   static nusObjMgr* mpInstance;
   nusObject* mpObjectList;
   nusObject* mpLastObject;
   void registerObject(nusObject* object);
   void unregisterObject(nusObject* object);
   nusObjMgr();
   ~nusObjMgr();
};

インスタンスを作る時に、constructorで自動的にマネジャーに登録する。同じく、destructorでオブジェクトの登録を自動的に消す。dumpObjectID()はリストにあるオブジェクトのIDをダンプする。この関数で、メモリに残ったオブジェクトを簡単に調べられる。
問題はこのクラスがあっても皆が使いたいかどうかだね…(笑)