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"
 }

Reply via email to