&this pointer
    Brian Byrne 
    bdbyrne at wisc.edu
       
    Sun Feb 11 12:30:36 PST 2007
    
    
  
e-t172 wrote:
> The following does not work :
> 
> import std.stdio;
> 
> class Test
> {
>     this()
>     {
>         void* ptr = cast(void*) this;
> 
>         (*(cast(Test*) ptr)).foo();
>     }
> 
>     void foo()
>     {
>         writefln("OK");
>     }
> }
> 
> int main()
> {
>     auto test = new Test();
> 
>     return 0;
> }
> 
> Result : segmentation fault
> 
> Could one explain why ?
"this" is of type "Test". Therefore to recover it from a void*, do simply:
(cast(Test)ptr).foo();
Brian Byrne
    
    
More information about the Digitalmars-d-learn
mailing list