On Wed, 21 Oct 2009 16:53:20 -0400, Zarathustra <adam.chrapkow...@gmail.com> wrote:

Why value of pointer to this is different in global function, member function and constructor?
//---------------------------------------------------------------------------------------------------
module test;
class Foo{
  this(){
    writefln("ctor 0x%08X", cast(dword)&this);
  }

  void func(){
    writefln("func 0x%08X", cast(dword)&this);
  }
}
import std.stdio;

void main(){
    Foo foo = new Foo;
    writefln("main 0x%08X", cast(dword)&foo);
    foo.func();
}
//---------------------------------------------------------------------------------------------------
sample output:
ctor 0x0012FEC8
main 0x0012FEE8
func 0x0012FEB8

&this is the address of the pointer itself (local function argument on the stack), not what it points to. you want cast(void *)this.

-Steve

Reply via email to