class Map { private: this() {} static Map obj; void* list[void*]; public: static Map GetInstance() { synchronized { if (!obj) { obj = new Map; } } return obj; } void SetProp(void* key, void* value) { list[key] = value; } void* GetProp(void* key) { try { return list[key]; } catch { return null; } } void RemoveProp(void* key) { if (key in list) { list[key] = null; list.remove(key); } } }