template class mrpt::containers::deepcopy_poly_ptr
Wrapper to a std::shared_ptr<>, adding deep-copy semantics to copy ctor and copy operator, suitable for polymorphic classes with a clone()
method.
Example use: deepcopy_poly_ptr<mrpt::poses::CPosePDF::Ptr>
See also:
for non-virtual classes, see copy_ptr<T>
#include <mrpt/containers/deepcopy_poly_ptr.h> template <typename T> class deepcopy_poly_ptr { public: // construction deepcopy_poly_ptr(const T& ptr); deepcopy_poly_ptr(); deepcopy_poly_ptr(const deepcopy_poly_ptr<T>& o); deepcopy_poly_ptr(deepcopy_poly_ptr&& o); // methods deepcopy_poly_ptr<T>& operator = (const deepcopy_poly_ptr<T>& o); deepcopy_poly_ptr<T>& operator = (const T& o_ptr); deepcopy_poly_ptr<T>& operator = (deepcopy_poly_ptr<T>&& o); T::element_type* get(); const T::element_type* get() const; T::element_type* operator -> (); const T::element_type* operator -> () const; T::element_type& operator * (void); const T::element_type& operator * () const; operator bool () const; bool operator ! (void) const; const T& get_ptr() const; T& get_ptr(); void reset(); };
Construction
deepcopy_poly_ptr(const T& ptr)
Ctor from a smart pointer; makes deep copy.
deepcopy_poly_ptr()
Default ctor; init to nullptr.
deepcopy_poly_ptr(const deepcopy_poly_ptr<T>& o)
copy ctor: makes a copy of the object via clone()
deepcopy_poly_ptr(deepcopy_poly_ptr&& o)
move ctor
Methods
deepcopy_poly_ptr<T>& operator = (deepcopy_poly_ptr<T>&& o)
move operator