我想在我的代碼中使用auto_ptr,但顯然出現了問題。函數中的C++ auto_ptr(作爲參數和返回值)
auto_ptr<ClassType> Class(s.Build(aFilename)); //Instantiation of the Class object
int vM = s.GetM(Class);
int vS = s.Draw(Class);
奇怪的是,類的實例化後,Class對象存在,因此 通過調用s.GetModelMean(類),級不爲空。但是在退出函數GetM後, 類爲空,因此不再可用。調用函數Draw時發生崩潰。
我聲明的功能方式如下:
int GetM(auto_ptr<ClassType> aM);
看來,該類被破壞,但我不明白爲什麼...
謝謝,它甚至沒有使用* Class.get(),我剛剛通過類,它的工作。 – ISTB 2012-07-12 06:39:42
我不同意'auto_ptr'非常壞 - 我認爲它只是一個誤導性的名字,所以它的功能已經被打破。 – 2012-07-12 06:46:01
複製auto_ptr時,原始設置爲零,因此一次只有一個auto_ptr對象控制指針。這是在傳遞auto_ptr作爲函數參數時發生的情況。它是這樣設計的,並不意味着它被打破了。 – deo 2012-07-12 07:04:31