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

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


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

请指教。

谢谢!

最佳答案

通过引用传递auto_ptr。另外,不建议使用auto_ptr。使用unique_ptr。

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

10-05 23:50