Service_NSSM/CC_SDK/Include/TL/AutoDestruct.h
2025-09-27 14:24:18 +08:00

43 lines
1.2 KiB
C++

#ifndef SDK_TL_AUTODESTRUCT_H
#define SDK_TL_AUTODESTRUCT_H
namespace CTL{
template<typename T>
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