On Friday, 16 June 2017 at 13:46:14 UTC, Lester wrote:
If I have something like the following:
class A {
void foo(){ writeln(typeof(this)); }
...
}
class B : A {
...
}
And I want the results:
A a = new A;
B b = new B;
a.foo(); // prints "A"
b.foo(); // prints "B"
How would I go about doing that? At the moment b.foo() is
printing "A".
What about something like this?
class A {}
class B : A {}
void foo(T)(T object) {
import std.stdio : writeln;
writeln(object.classinfo.toString); // you can use whatever
property you want...
}
void main()
{
A a = new A;
B b = new B;
a.foo(); // prints "test.A"
b.foo(); // prints "test.B"
}