#ifndef SDK_TL_AUTODESTRUCT_H #define SDK_TL_AUTODESTRUCT_H namespace CTL{ template class AutoDestruct{ public: //-------------------------------------------------------------------------------------------------------------- AutoDestruct(T* ptr){ if(ptr){ m_ptr = std::move(ptr); } } ~AutoDestruct(){ if (m_ptr) { delete m_ptr; } m_ptr = nullptr; } //-------------------------------------------------------------------------------------------------------------- T* Get(){ return m_ptr; } const T* Get() const{ return m_ptr; } explicit operator bool() const { return m_ptr != nullptr; } T& operator*() const { return *m_ptr; // 假设 ptr 是内部 Term* } T* operator->() const { return m_ptr; // 假设 ptr 是内部 Term* } //-------------------------------------------------------------------------------------------------------------- private: T* m_ptr = nullptr; }; } #endif