Address of instance member function

Chris Nicholson-Sauls ibisbasenji at gmail.com
Fri Mar 30 11:31:35 PDT 2007


Deewiant wrote:
> Jarrett Billingsley wrote:
>  > It's a function pointer to that method.  It's actually useful -- you can
>> simulate pointer-to-members using this and delegates:
>>
>> class A
>> {
>>     int mX;
>>
>>     this(int x)
>>     {
>>         mX = x;
>>     }
>>
>>     void foo(int y)
>>     {
>>         writefln(mX, ", ", y);
>>     }
>> }
>>
>> void main()
>> {
>>     scope a = new A(5);
>>     a.foo(4);
>>
>>     void delegate(int) dg;
>>     dg.funcptr = &A.foo; // <<- dah
>>     dg.ptr = cast(void*)a;
> 
> Are there other uses? Doesn't the above essentially boil down to just:
> 
> auto dg = &a.foo;
> 

It does, except that you could later set dg.ptr to a /different/ instance.  Its utility is 
in late binding to instances selected by some arbitrary (and possibly external) means. 
I'd like to see if it plays well with inheritance, though.

-- Chris Nicholson-Sauls


More information about the Digitalmars-d-learn mailing list