diff --git a/SpeckleLib/Speckle/Record/Element/ModelElement.cpp b/SpeckleLib/Speckle/Record/Element/ModelElement.cpp index 4f4c138..bc8159a 100644 --- a/SpeckleLib/Speckle/Record/Element/ModelElement.cpp +++ b/SpeckleLib/Speckle/Record/Element/ModelElement.cpp @@ -94,7 +94,7 @@ ModelElement::ModelElement(const API_Element& elemData, const Guid& tableID) : b source: The object to copy --------------------------------------------------------------------*/ -ModelElement::ModelElement(const ModelElement& source) : base{ source } { +ModelElement::ModelElement(const ModelElement& source) : base{source}, Classified{source}, Propertied{source} { m_data = source.m_data ? std::make_unique(*m_data) : nullptr; } //ModelElement::ModelElement diff --git a/SpeckleLib/Speckle/Record/Element/ModelElement.h b/SpeckleLib/Speckle/Record/Element/ModelElement.h index bb73eb0..085ab49 100644 --- a/SpeckleLib/Speckle/Record/Element/ModelElement.h +++ b/SpeckleLib/Speckle/Record/Element/ModelElement.h @@ -1,14 +1,17 @@ #ifndef SPECKLE_RECORD_MODEL_ELEMENT #define SPECKLE_RECORD_MODEL_ELEMENT +#include "Speckle/Record/Classification/Classified.h" #include "Speckle/Record/Element/Element.h" +#include "Speckle/Record/Element/Element.h" +#include "Speckle/Record/Property/Propertied.h" namespace speckle::record::element { /*! Base class for model elements, i.e. with 3D bodies and typically representing the project model */ - class ModelElement : public Element { + class ModelElement : public Element, public classify::Classified, public property::Propertied { public: // MARK: - Types diff --git a/SpeckleLib/Speckle/Record/Property/Propertied.cpp b/SpeckleLib/Speckle/Record/Property/Propertied.cpp index 33b7a31..2c64e21 100644 --- a/SpeckleLib/Speckle/Record/Property/Propertied.cpp +++ b/SpeckleLib/Speckle/Record/Property/Propertied.cpp @@ -13,13 +13,6 @@ using namespace speckle::record::classify; using namespace speckle::record::property; using namespace speckle::utility; -/*-------------------------------------------------------------------- - Default constructor - --------------------------------------------------------------------*/ -Propertied::Propertied() { -} //Propertied::Propertied - - /*-------------------------------------------------------------------- Get the attached properties diff --git a/SpeckleLib/Speckle/Record/Property/Propertied.h b/SpeckleLib/Speckle/Record/Property/Propertied.h index 5c8fcc2..83c3687 100644 --- a/SpeckleLib/Speckle/Record/Property/Propertied.h +++ b/SpeckleLib/Speckle/Record/Property/Propertied.h @@ -25,7 +25,18 @@ namespace speckle::record::property { /*! Default constructor */ - Propertied(); + Propertied() {} + /*! + Copy constructor + @param source The object to copy + */ + Propertied(const Propertied& source) : + m_properties{source.m_properties ? std::make_unique>(*source.m_properties) : nullptr} {} + /*! + Move constructor + @param source The object to move + */ + Propertied(Propertied&& source) noexcept : m_properties{std::move(source.m_properties)} {} /*! Destructor */ diff --git a/SpeckleLib/Speckle/Record/Property/Property.cpp b/SpeckleLib/Speckle/Record/Property/Property.cpp index 0c9a37a..32e626a 100644 --- a/SpeckleLib/Speckle/Record/Property/Property.cpp +++ b/SpeckleLib/Speckle/Record/Property/Property.cpp @@ -69,6 +69,16 @@ Property::Property(const Setting& setting, std::shared_ptr