質問: ### 問題 例のようにスマートポインタtarget_cost_にある値を、goal_cost_に保存したいのですがスマートポインタのコピーはできないということでした。OpenCVのプログラムでスマートポインタを使用しているため、どうにかしてスマートポインタ間で値をコピーする方法がないかお聞きしたいです。 ### 例 ``` class Hoge{ public: void Run(); private: void Loop(); std::unique_ptr> target_cost_; // 元のポインタ std::unique_ptr> goal_cost_; //保存先にしたいポインタ ... ``` ### 備考 visual studio 2019
回答: > > どうにかしてスマートポインタ間で値をコピーする方法がないかお聞きしたいです。 > > > std::unique_ptrを使うのではなく std::shared_ptrを使えばコピーできます。 ``` #include #include int main(){ constexpr unsigned int size = 5;//要素数 auto mem1 = std::shared_ptr(new int[size]); auto mem2 = std::shared_ptr(); for(int i=0;i