2012-11-30 31 views
0

我使用的std :: auto_ptr的C++和下面是我的代碼,斷言失敗的auto_ptr不Deferencable

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

上面的代碼給我Assertion failed: auto_ptr not derefencable運行時錯誤。

請指教。

謝謝!

+1

放棄使用auto_ptr。使用std :: unique_ptr或std :: shared_ptr –

+0

不能放棄auto_ptr,遺留代碼:( – domlao

+0

請對您的接受率做些事情。 –

回答

1

通過引用傳遞auto_ptr。此外,auto_ptr已棄用。使用unique_ptr。

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