DeveloperFieldDefinition in C++ sdk should implement operator= to do a deep copy

Former Member
Former Member

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;
}