#pragma once #include #include namespace extra2d { // ============================================================================ // 侵入式引用计数基类 // 参考 Cocos2d-x 的 RefCounted 设计 // ============================================================================ class RefCounted { public: virtual ~RefCounted() = default; // 增加引用计数 void addRef() { ++_referenceCount; } // 减少引用计数,当计数为0时删除对象 void release() { if (--_referenceCount == 0) { delete this; } } // 获取当前引用计数 uint32_t getRefCount() const { return _referenceCount.load(); } protected: // 构造函数,初始引用计数为1 RefCounted() : _referenceCount(1) {} private: std::atomic _referenceCount; }; } // namespace extra2d