看板 C_and_CPP 關於我們 聯絡資訊
請問 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
scwg:ctor 不用改,auto_ptr 版的 test1 的宣告錯了 12/28 11:12
PkmX:宣告成std::auto_ptr<a>就好 還有a要有virtual dtor 12/28 11:16
PkmX:然後有空翻一下std::unique_ptr和為什麼auto_ptr設計上有問題 12/28 11:16
tyc5116:E2285 Could not find a match for 12/28 13:33
tyc5116:'_STL::auto_ptr<InterfaceObjectBase>::operator = 12/28 13:33
tyc5116:<_Tp1>(InterfaceObjectWorkStage *)' 12/28 13:34
tyc5116:會出現這個是auto_ptr本身設計上的一些缺陷,我有說錯嗎? 12/28 13:34
PkmX:你應該直接在obj::obj()用initialization list去建構test1 12/28 13:44
loveme00835:http://ppt.cc/rDQl http://ppt.cc/xr_Z 12/28 13:45
loveme00835:在用之前你有好好看一下它支援的操作嗎? 12/28 13:46
PkmX:你可以去翻一些介紹raii的文章 12/28 13:46
PkmX:另外我講的auto_ptr的問題是指它分不清copy和move 12/28 13:47
tyc5116:謝謝兩位 12/28 14:37