To let the following code work correctly, DeveloperFieldDefinition in C++ sdk should implement operator= to do a deep copy.
//MesgDefinition& mesgDef
//And MesgDefinition has a member: std::vector<DeveloperFieldDefinition> devFields
lastMesgDefinition[mesgDef.GetLocalNum()] = mesgDef;
DeveloperFieldDefinition& DeveloperFieldDefinition::operator=(const DeveloperFieldDefinition& other){
if (this != &other){
num = other.num;
size = other.size;
developerDataIndex = other.developerDataIndex;
if (mesg != nullptr){
delete mesg;
mesg = nullptr;
}
if (other.mesg != nullptr) {
mesg = new FieldDescriptionMesg(*other.mesg);
}
if (developer != nullptr){
delete developer;
developer = nullptr;
}
if (other.developer != nullptr){
developer = new DeveloperDataIdMesg( *other.developer );
}
}
return *this;
}