ORIGINAL
Loading...
Searching...
No Matches
cloneable.h
Go to the documentation of this file.
1#ifndef CLONEABLE_H
2#define CLONEABLE_H
3
4namespace original {
5
11
20template<typename DERIVED>
22protected:
27 baseCloneable() = default;
28
29public:
43 [[nodiscard]] virtual DERIVED* clone() const;
44
49 virtual ~baseCloneable() = default;
50};
51
58class cloneable : public baseCloneable<cloneable> {
59protected:
64 cloneable() = default;
65
66public:
71 ~cloneable() override = default;
72};
73
74} // namespace original
75
76// ----------------- Definitions of cloneable.h -----------------
77
78template<typename DERIVED>
80 return new DERIVED(static_cast<const DERIVED&>(*this));
81}
82
83#endif //CLONEABLE_H
virtual ~baseCloneable()=default
Virtual destructor for baseCloneable.
baseCloneable()=default
Default constructor for baseCloneable.
virtual DERIVED * clone() const
Creates a clone of the current object.
Definition cloneable.h:79
~cloneable() override=default
Virtual destructor for cloneable.
cloneable()=default
Default constructor for cloneable.
Main namespace for the project Original.
Definition algorithms.h:21