Dynamic object inherane
kov_serg
kov_serg at freemail.ru
Fri Mar 7 04:54:55 PST 2008
May be this will sound strange. How about dymanic inhearence. I mean warapper classes:
class A { // base class
int x=0;
int fn() { return x++; }
}
class B : A { // mutation 1
int fn() { return x+3; }
}
class WA : A { // dynamic mutation (wrapper class)
A parentA; // or =new A(); as default base class
this(A a) { parentA=a; }
~this() { delete parentA; parentA=null; }
// a lot of hand writing wrappers (that can build automatic)
int x() { return parentA->x; }
int x(int v) { return parentA->x=v; }
int fn() { return parentA->fn(); }
// so on
}
class WA2 : *A { // the same but in brief form
this(A a) { parentA=a; }
}
class WA3 : WA2 { // next class generation
int fn() { return super.fn()-1; }
}
//...
void tst() {
WA1 w1=new WA2(new B);
w1.fn();
w1.parentA=new A(); // change class behavior runtime
w1.fn();
WA2 w2=new WA2(new B);
w2.fn();
w2.parentA=new A(); // change class behavior runtime
w2.fn();
}
Some kind of agregations. May such contruction be practicaly usefull? What do you think?
More information about the Digitalmars-d
mailing list