clone method of Object
grauzone
none at example.net
Wed Apr 15 06:30:41 PDT 2009
grauzone wrote:
> Qian Xu wrote:
>> Hi All,
>>
>> is there any (easy) way to clone an object or any other classes?
>>
>>
>> --Qian
>
> Simple answer: No.
>
> Complicated answer: Yes, but you have to write it yourself.
>
> Here's a nice starting point. You can use tupleof to get all members of
> a class. Note that this doesn't deal with superclasses, and members of
> superclasses are not copied:
>
> T clone(T)(T old) {
> auto newobject = new T();
> foreach (int i, _; old.tupleof) {
> newobject.tupleof[i] = old.tupleof[i];
> }
> return newobject;
> }
>
> cloned = clone(yourobject);
I should add that members of subclasses are not copied either. E.g. if
you have
class A {int a;}
class B : A {int b;}
class C : B {int c;}
B someobject;
clone(someobject);
the clone method will only copy member b, but not a or c.
More information about the Digitalmars-d-learn
mailing list