Getting a class' name, but not fully qualified?

Dicebot public at dicebot.lv
Sun Mar 30 09:33:45 PDT 2014


On Sunday, 30 March 2014 at 16:26:48 UTC, Matt wrote:
> On Friday, 28 March 2014 at 13:38:01 UTC, Dicebot wrote:
>
>> .classinfo name is name for actual class instance referenced 
>> from the variable it was applied to. It happens to be fully 
>> qualified but key difference here is that it uses RTTI 
>> (run-time type information) to access "real" type of 
>> polymorphic entity.
>
> Thanks for the clarification, Dicebot. Does it mention those 
> points in the docs, because I don't remember seeing them? So we 
> could be looking at something closer to:
>
>   import std.string;
>   import std.stdio;
>
>   class Foo{
>     int a;
>   }
>
>   class Bar: Foo{
>     int b;
>   }
>
>   void main(){
>     Foo bar = new Bar();
>     writeln ("class name: " ~ 
> bar.classinfo.name[bar.classinfo.name.lastIndexOf(".") .. 
> $].dup);
>   }
>
> if I'm correct?

Yes. You don't need .dup though and it will be `lastIndexOf + 1` 
for the start index but key idea is solid.

This is not explicitly mentioned anywhere because "runtime type 
information" (http://dlang.org/phobos/object.html#.Classinfo) is 
a wide-spread term with strong meaning.


More information about the Digitalmars-d-learn mailing list