断言失败Auto_Ptr不可解除引用

时间:2012-11-30 09:37:55

标签: c++

我在C ++中使用std :: auto_ptr,下面是我的代码,

void fSample(std::auto_ptr<CFoo> pParam)
{
    CFoo* pFoo = pParam.release();
    fTodo(pFoo);
}

上面的代码为我提供了 Assertion failed: auto_ptr not derefencable 运行时错误。

请告知。

谢谢!

1 个答案:

答案 0 :(得分:1)

通过引用传递auto_ptr。此外,不推荐使用auto_ptr。使用unique_ptr。

void fSample(std::auto_ptr<CFoo> &pParam) // <= Note the ampersand
{
    CFoo* pFoo = pParam.release();
    fTodo(pFoo);
}