如何解决为什么我不能将 unique_ptr 推回到向量中??
开发过程中遇到为什么我不能将 unique_ptr 推回到向量中?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么我不能将 unique_ptr 推回到向量中?的解决方法建议,希望对你解决为什么我不能将 unique_ptr 推回到向量中?有所启发或帮助;问题描述
这个程序有什么问题?
#include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; }
错误:
In file included from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0,from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48,from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/memory:64,from main.cpp:6: c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*,const _Tp&) [with _Tp = std::unique_ptr<int>,_Tp* = std::unique_ptr<int>*]': c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_vector.h:745:6: instantiated from 'void std::vector<_Tp,_Alloc>::push_back(const value_type&) [with _Tp = std::unique_ptr<int>,_Alloc = std::allocator<std::unique_ptr<int> >,value_type = std::unique_ptr<int>]' main.cpp:16:21: instantiated from here c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h:207:7: error: deleted function 'std::unique_ptr<_Tp,_Tp_Deleter>::unique_ptr(const std::unique_ptr<_Tp,_Tp_Deleter>&) [with _Tp = int,_Tp_Deleter = std::default_delete<int>,std::unique_ptr<_Tp,_Tp_Deleter> = std::unique_ptr<int>]' c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/ext/new_allocator.h:105:9: error: used here In file included from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/vector:69:0,from main.cpp:7: c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void std::vector<_Tp,_Alloc>::_M_insert_aux(std::vector<_Tp,_Alloc>::iterator,_Args&& ...) [with _Args = {const std::unique_ptr<int>&},_Tp = std::unique_ptr<int>,std::vector<_Tp,_Alloc>::iterator = __gnu_cxx::__normal_iterator<std::unique_ptr<int>*,std::vector<std::unique_ptr<int> > >,typename std::vector<_Tp,_Alloc>::_Base::_Tp_alloc_type::pointer = std::unique_ptr<int>*]': c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_vector.h:749:4: instantiated from 'void std::vector<_Tp,_Tp_Deleter> = std::unique_ptr<int>]' c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/vector.tcc:314:4: error: used here
尚未找到解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)