神のクラス
やっぱ、神のクラスって重要だね。ゲームまたはアプリケーションの中のクラスはこのクラスから派生しないとならない。このようなクラスがあれば、メモリリークもすぐに見付かるよね。理想な神のクラスは
- シンプルで小さい。
- 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をダンプする。この関数で、メモリに残ったオブジェクトを簡単に調べられる。
問題はこのクラスがあっても皆が使いたいかどうかだね…(笑)