Get specific functions of unknown type at runtime?

F i L witte2008 at gmail.com
Sun Dec 16 23:54:07 PST 2012


@Adam D. Ruppe

Damn, I was afraid you where going to say to do something like 
that. It doesn't really work for what I'm thinking about, but 
thanks for confirming that my original code can't work.

I have an alternative in mind, but first, is there a possible way 
for a Super class to ask about a derivative's members during 
constructions? (I'm guessing not). Something like:

     import std.stdio, std.traits;

     class A
     {
         this() {
             alias typeof(this) type;
             static if (hasMember!(type, "foo")) {
                 auto top = cast(type) this;
                 top.foo();
             }
         }
     }

     class B : A
     {
         void foo() { writeln("foobar"); }
     }

     void main() {
         auto b = new B(); // prints: 'foobar'
     }

I assume there's no way (I can't get it to work), but I've heard 
odd things about 'typeof(this)' before, I just can't remember 
exactly what, so I figure it's worth asking about.

If not, I have an alternative way to accomplish what I want. It's 
just not as ideal. I really wish D has partial classes, that 
would be awesome.




@Jacob Carlborg

Thanks for the link.


More information about the Digitalmars-d-learn mailing list