← Back to team overview

kicad-developers team mailing list archive

Re: Copy & operator=

 

On 05/26/2016 04:53 PM, Maciej Sumiński wrote:
> On 05/26/2016 09:46 AM, jp charras wrote:
>> Le 26/05/2016 à 08:59, Maciej Sumiński a écrit :
>>> Thank you Cirilo. I am trying to be really careful here, that is why I
>>> am asking for more details. I would like to make the code simpler, so
>>> there are no more doubts about whether to use operator = or Copy() (for
>>> some classes it is exactly the same code).
>>>
>>> For the scenario you described, there is EDA_ITEM::Clone() method.
>>> Copy() is defined only for a few classes, and others are copied using
>>> operator=, so it is a bit confusing to me.
>>>
>>> Regards,
>>> Orson
>>
>> Usually, Copy() is used when you do not want to copy all members.
>> Typically when you do not want to change Pback, Pnext, m_Parent, time stamp and a few other pointers
>> and flags.
>>
>> If these members are reinitialized (or have the right value) after copy, using Copy() or = (for
>> classes which do not define Copy() and can be copied by = ) can give the same result.
> 
> One more question, for DRAWSEGMENT Copy() is implemented by calling
> operator=, so it does not transfer the mentioned fields. Should it be
> the case for every class? How to recognize when a parent, timestamp &
> list-related fields should be copied as well? They are transferred by
> automatically generated operator=.
> 
> Regards,
> Orson

Sorry for multiple messages in a row, but I am having more doubts. Some
of the BOARD_ITEM derived classes have defined copy constructors, and
others not with a comment that the default copy constructor is fine.

Classes with copy constructor defined do not copy parents, timestamp or
list-related fields, so I assume that should be the case for every other
class. We should pick one option: either we copy everything in copy
constructors and defined them only for certain classes or every class
should have a copy constructor that explicitly skips the mentioned
fields. Any ideas?

Regards,
Orson

Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References