typeid of surrounding class from a static function?

Simen Kjærås simen.kjaras at gmail.com
Sun Nov 6 13:20:07 PST 2011


On Sun, 06 Nov 2011 14:34:33 +0100, J Arrizza <cppgent0 at gmail.com> wrote:

> Hi,
>
> I'm trying to get the name of the surrounding class from within a static
> method of the class:
>
> import std.stdio;
>
> void main(string[] args)
>   {
>     auto o = new SomeClass();
>     o.Run();
>     SomeClass.StaticRun();
>   }
>
> class SomeClass
>   {
>   public void Run()
>     {
>       writeln("In Class non-static: ", typeid(typeof(this)));
>     }
>   public static void StaticRun()
>     {
>       writeln("In Class static: ", typeid(typeof(??)));
>     }
>   }
>
>
> What do I use for "??" above.

Have you tried using this? It seems to work for me:

mixin template foo( ) {
     static void baz( ) {
         writeln( typeid(typeof( this ) ) );
     }
}

class A {
     mixin foo!();
}

void main( ) {
     A.baz(); // prints bar.A
}


More information about the Digitalmars-d mailing list