c++ - 我的类“Smart_pointer”和可变参数模板的问题
问题描述
我需要你的帮助。我创建了一个“智能指针”类和一个使用可变参数模板来模拟新运算符(保留内存空间)的函数。
template <typename T>
class smart_ptr{
T* pointer = nullptr;
public:
explicit smart_ptr<T>(T* p = nullptr){
pointer = p;
}
smart_ptr(T value){pointer = new T(value);}
~smart_ptr(){
delete (pointer);
}
T& operator*(){return *pointer;}
T* operator->(){return pointer;}
};
template<typename T, typename ...Params>
smart_ptr<T> make_smart_ptr(Params&& ...params) {
return smart_ptr<T>(params...);
}
但是,当我用以下情况测试它时
smart_ptr<int> sp1;
sp1 = make_smart_ptr<int>(10);
cout << *sp1 << endl; //10
smart_ptr<string> sp2 = make_smart_ptr<string>("Hello");
cout << *sp2 << endl; //"Hello"
它只给了我正确的输出,即“Hello”,而在另一个输出中它给了我 0 而不是 10(在我编译和执行代码的结果下方)。
0 //result of cout to sp1 (incorrect)
Hello //result of cout to sp2 (correct)
您可以为我解决我的代码并在所有情况下运行的任何帮助。谢谢和美好的一周。
解决方案
推荐阅读
- c - 在tracee停止后Waitpid不继续
- python - Python中的神经网络概率计算
- javascript - 谷歌浏览器中的fontawesome中断与角度
- javascript - Mendeley API 文件下载失败
- apache-spark - Databricks 表/模式部署
- html - 在 HTML/CSS 中附加一个小方块的大方块
- amazon-web-services - 如何承担 Cognito 的跨账户角色?
- sql - Databricks - 通过 sql 命令进行字符串操作
- reporting-services - SSRS(Sequel Server Reporting Services)子报表返回“错误:无法显示子报表。”
- python - 如何从 csv 文件中逐年绘制数据?