Array of class intances
YY
yyudhistira at hotmail.com
Wed Apr 9 11:52:05 PDT 2008
> Something like this (untested, it may need debugging!) may be useful for nested arrays (IsArray is true for dynamic or static arrays and false in every other situation):
>
> template DeconstArrType(T) {
> // similar to std.bind.DynamicArrayType
> static if (IsArray!(T))
> alias typeof(T[0])[] DeconstArrType;
> else
> alias T DeconstArrType;
> }
>
> DeconstArrType!(TySub)[] deepDup(TySub)(TySub[] seq) {
> static if (is(typeof(TySub.dup))) {
> auto result = new DeconstArrType!(TySub)[seq.length];
> foreach (i, sub; seq)
> result[i] = deepDup(sub);
> return result;
> } else {
> return seq.dup;
> }
> }
>
> A generic deepcopy() function that works with everything (that needs the support of a special method in Object class too) may be useful.
>
Great, thanks for the hints. I have another question. Do I have to delete each and every member of the array? Like this :
foreach (ref i; inst) delete i;
inst.length = 0;
If I only do this :
inst.length = 0;
will all the instance items be automatically captured by garbage collector?
More information about the Digitalmars-d-learn
mailing list