[問題] auto_ptr的使用

看板C_and_CPP (C/C++)作者 (累人啊....)時間13年前 (2012/12/28 10:38), 編輯推噓0(0013)
留言13則, 4人參與, 最新討論串1/1
請問 class a{ public: }; class sub_a:public a{ public: }; class obj{ public: //auto_ptr<a*> test1; a* test2; }; class sub_obj:public obj{ public: sub_obj(); }; sub_obj::sub_obj(){ this->test2 = new sub_a(); } 如果test2要改成test1的宣告方式,即以auto_ptr的方式宣告 請問我在ctor的地方要如何作修改呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.238.4

12/28 11:12, , 1F
ctor 不用改,auto_ptr 版的 test1 的宣告錯了
12/28 11:12, 1F

12/28 11:16, , 2F
宣告成std::auto_ptr<a>就好 還有a要有virtual dtor
12/28 11:16, 2F

12/28 11:16, , 3F
然後有空翻一下std::unique_ptr和為什麼auto_ptr設計上有問題
12/28 11:16, 3F

12/28 13:33, , 4F
E2285 Could not find a match for
12/28 13:33, 4F

12/28 13:33, , 5F
'_STL::auto_ptr<InterfaceObjectBase>::operator =
12/28 13:33, 5F

12/28 13:34, , 6F
<_Tp1>(InterfaceObjectWorkStage *)'
12/28 13:34, 6F

12/28 13:34, , 7F
會出現這個是auto_ptr本身設計上的一些缺陷,我有說錯嗎?
12/28 13:34, 7F

12/28 13:44, , 8F
你應該直接在obj::obj()用initialization list去建構test1
12/28 13:44, 8F

12/28 13:45, , 9F

12/28 13:46, , 10F
在用之前你有好好看一下它支援的操作嗎?
12/28 13:46, 10F

12/28 13:46, , 11F
你可以去翻一些介紹raii的文章
12/28 13:46, 11F

12/28 13:47, , 12F
另外我講的auto_ptr的問題是指它分不清copy和move
12/28 13:47, 12F

12/28 14:37, , 13F
謝謝兩位
12/28 14:37, 13F
文章代碼(AID): #1GtGOtsM (C_and_CPP)
文章代碼(AID): #1GtGOtsM (C_and_CPP)