【发布时间】:2011-06-25 01:29:40
【问题描述】:
我有一个功能可以做到这一点:
static MyClass* MyFunction(myparams)
{
return new MyClass(myparams)
}
我可以在另一个具有以下签名的函数中调用此函数:
void MyFunction2(std::auto_ptr<MyClass> myparam)
但是当我尝试这样做时,我遇到了编译器错误:
无法转换第一个参数 从 MyClass * 到 std::auto_ptr<_ty>
为什么?感谢您的帮助
编辑 1 询问 myparams 类型是正常的,但还有一个 T 参数,因为该函数位于模板类中
【问题讨论】:
-
MyFunction 中myparams 的类型是什么,问题中没有。
-
你明白
auto_ptr的目的吗? -
@Eric 我添加了 myparams 类型。 @Jefromi 是的,我知道 auto_ptr 让我不用考虑指针破坏和内存释放
-
但是一旦对象超出范围,它就会自动销毁对象,从而避免了这种情况——这意味着如果存在隐式转换,您可能会遇到一些令人讨厌的意外。了解它的作用很重要。