clone method of Object

grauzone none at example.net
Wed Apr 15 08:03:48 PDT 2009


Qian Xu wrote:
> grauzone wrote:
>> newobject.tupleof[i] = old.tupleof[i];
> 
> If the current value of tupleof[i] is an object, the object will be
> referenced, won't it?
> 
> Shall I write:
> 
>   auto elem = old.tupleof[i];
>   static if (is(typeof(elem) == class))
>   {
>      newobject.tupleof[i] = clone(elem);
>   }
>   else
>   {
>      newobject.tupleof[i] = elem;
>   }

Object graphs often contain circular references liker this:

class A {
	B b;
}

class B {
	A a;
}

auto a = new A();
auto b = new B();
a.b = b;
b.a = a;

Your recursive approach wouldn't quite work with that. Before cloning an 
object, you'll first have to check if the object was already cloned. If 
this is the case, use the previously created clone instead of making a 
new clone.

> 
> 
> 
> --Qian


More information about the Digitalmars-d-learn mailing list