问题描述
我需要你的帮助。我创建了一个“智能指针”类和一个使用可变参数模板来模拟新运算符(保留内存空间)的函数。
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)
您可以给我的任何帮助来解决我的代码并且它在所有情况下都能运行。谢谢,祝你周末愉快。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)