#pragma once class CReferenceObject { public: CReferenceObject(); virtual ~CReferenceObject(); void AddReference(); void AddReferenceOnly(); void Release(); int GetReferenceCount(); bool canDestroy(); protected: virtual void OnConstruct(); virtual void OnSelfDestruct(); private: int m_refCount; bool m_destructed; }; //martysama0134's 2e58d0b8baeb072acdf3afc4a5d1999f