c++ - 模板中的智能指针 c++
问题描述
创建一个
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;
}
推荐阅读
- sql-server - 在第三个表上应用右连接之前过滤表
- python-3.x - 如何通过在 Python3 中使用一个变量在函数中传递可变数量的参数?
- wordpress - 如何在我的 HTTPS 网站上嵌入 http iframe?
- architecture - 在 DDD 中搜索聚合
- r - lapply 中的函数调用
- postgresql - 何时在事务性写入中评估 nextval?
- javascript - node.js:webpack:Babel:未知替换“BODY”给定
- nebular - 有没有办法关闭所有的星云烤面包机?
- python - 正确使用 Anaconda 的 Python 作为 PATH 的“python”
- pcf - Git Bash 中的“正在验证......凭据被拒绝,请重试”