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