diff --git a/DDCore/include/DD4hep/OpaqueData.h b/DDCore/include/DD4hep/OpaqueData.h index 2d573a02280de4bb44cdea1629396c3948548d3d..3c8ca579800758bb360848bb38d98c3d2397730a 100644 --- a/DDCore/include/DD4hep/OpaqueData.h +++ b/DDCore/include/DD4hep/OpaqueData.h @@ -39,11 +39,11 @@ namespace DD4hep { /// Standard initializing constructor OpaqueData(); /// Standard Destructor - virtual ~OpaqueData() = default; + virtual ~OpaqueData(); /// Copy constructor - OpaqueData(const OpaqueData& copy) = default; + OpaqueData(const OpaqueData& c); /// Assignment operator - OpaqueData& operator=(const OpaqueData& copy) = default; + OpaqueData& operator=(const OpaqueData& c); public: /// Data type diff --git a/DDCore/src/OpaqueData.cpp b/DDCore/src/OpaqueData.cpp index 94ccf8b656aaaeea2512a6902d8c5d3a71ab6ef6..32feeda184da1888125fcf81f58ddb9450536ee1 100644 --- a/DDCore/src/OpaqueData.cpp +++ b/DDCore/src/OpaqueData.cpp @@ -29,6 +29,23 @@ using namespace DD4hep; OpaqueData::OpaqueData() : grammar(0), pointer(0) { } +/// Copy constructor +OpaqueData::OpaqueData(const OpaqueData& c) : grammar(c.grammar), pointer(c.pointer) { +} + +/// Standard Destructor +OpaqueData::~OpaqueData() { +} + +/// Assignment operator +OpaqueData& OpaqueData::operator=(const OpaqueData& c) { + if ( &c != this ) { + grammar = c.grammar; + pointer = c.pointer; + } + return *this; +} + /// Create data block from string representation bool OpaqueData::fromString(const string& rep) { if ( pointer && grammar ) { @@ -109,8 +126,8 @@ OpaqueDataBlock& OpaqueDataBlock::operator=(const OpaqueDataBlock& c) { if ( this != &c ) { if ( this->grammar == c.grammar ) { if ( destruct ) { - (*destruct)(pointer); - if ( (type&ALLOC_DATA) == ALLOC_DATA ) ::operator delete(pointer); + (*destruct)(pointer); + if ( (type&ALLOC_DATA) == ALLOC_DATA ) ::operator delete(pointer); } pointer = 0; grammar = 0;