模板 c++ 中的智能指针

Smart Pointers in templates c++

本文关键字:智能 指针 c++ 模板      更新时间:2023-10-16

创建一个类模板SmartPointer,该模板应包含指向任何对象的指针,并在调用该类的析构函数时删除该同一对象。为了使智能指针的行为方式与原始指针的行为方式相同,必须重叠运算符*->

所以,这是我的任务,我已经完成了这段代码,但->运算符不行。如果有人知道如何解决它,请帮助我。

template <class T>
class SmartPointer {
private:
T* x;
public:
T& operator*() {
return *x;
}
T& operator->(){
return this();
}
SmartPointer(T *X);
~SmartPointer();
};
template<class T>
SmartPointer<T>::SmartPointer(T *X) {
this->x = X;
}
template<class T>
SmartPointer<T>::~SmartPointer() {
delete x;
}

operator->函数应返回一个指针。它应该是指向包装对象的指针:

T* operator->()
{
return x;
}