Feature request: clone a class (similar to typedef)

coxalan coxalan at web.de
Fri Sep 21 04:56:29 PDT 2007


Hello!

There are situations where you want an exact clone of a class, including two separated sets of static class members.

A first try using typedef:

import std.stdio;

class foo {
    static uint a;
}

typedef foo foo1;
typedef foo foo2;

void main() {
    foo1.a = 1;
    foo2.a = 2;
    writefln(foo1.a);
    writefln(foo2.a);
}

gives the output
2
2

So typedef gives new types foo1 and foo2, but they share the same static class members.


A version which distinguishes the two copies by a template id:

import std.stdio;

class foo(uint id) {
    static uint a;
}


void main() {
    foo!(1).a = 1;
    foo!(2).a = 2;
    writefln(foo!(1).a);
    writefln(foo!(2).a);
}

gives the output
1
2


So basically this works.
But the problem is, that the code of the class needs to be extended by a id template variable.


I wonder if it would make sense to introduce a new keyword, say 'clone', which works like 'typedef', but additionally gives a new set of static class members.

coxalan



More information about the Digitalmars-d mailing list