clone method of Object
Qian Xu
quian.xu at stud.tu-ilmenau.de
Wed Apr 15 08:34:37 PDT 2009
grauzone wrote:
> ...
> cloned = clone(yourobject);
Hi again.
There are two things on my side:
1. Compiler refuses to clone private attributes. I have tried
gdc/gdmd/dmd_v1 in Linux.
2. I have implemented an example. But some part not implemented.
----------------- code -----------------------
T clone(T)(T oldobj)
{
auto newobj = new T();
if (oldobj is null)
{
return newobj;
}
foreach (int i, _; oldobj.tupleof)
{
auto elem = oldobj.tupleof[i];
static if (is(typeof(elem): char[]*))
{/*
if (elem !is null)
{
char[] tmp;
tmp = (*elem).dup;
newobj.tupleof[i] = &tmp;
}
else {
newobj.tupleof[i] = null;
}*/
NotImplemented_PleaseHelpMe;
}
else static if (is(typeof(elem) T2 : T2*))
{
if (elem !is null)
{
newobj.tupleof[i] = new T2;
*newobj.tupleof[i] = *elem;
}
else {
newobj.tupleof[i] = null;
}
}
else static if (is(typeof(elem) == class))
{
if (elem !is null)
{
newobj.tupleof[i] = clone(elem);
}
else {
newobj.tupleof[i] = null;
}
}
else {
newobj.tupleof[i] = elem;
}
}
return newobj;
}
----------------- code -----------------------
More information about the Digitalmars-d-learn
mailing list