On Saturday, 22 December 2012 at 21:04:47 UTC, Jonathan M Davis
wrote:
On Saturday, December 22, 2012 21:44:33 Steve D wrote:
Hello,
How can I get class B's array printed, using inherited A's
function? (Dmd 2.060)
class A {
static float[3] hi = 1;
void f() { writefln("hi %s",hi); }
}
class B : A {
static float[3] hi = 2;
}
B b = new B();
b.f(); // prints 'hi [1,1,1]'
// can I get it to use B's overridden hi:
[2,2,2] ?
Thanks for your help :)
Steve
Functions can be overriden. Variables can't be. So, when hi is
used, it'll be
the one in the class that it's used in unless you specifically
specify the one
to use (e.g. A.hi or B.hi), and simply changing hi to a
function won't help
you, because static functions are never virtual (they have no
this pointer, so
there's no way to look up which version of the function to
call). So, if you
want hi to be overridable, it'll have to be a public or
protected member
function rather than a variable or static function.
- Jonathan M Davis
Ok, thanks for the info John.
Steve