Member function pointers

Manu turkeyman at gmail.com
Mon Jun 10 02:45:04 PDT 2013


On 10 June 2013 18:04, Jacob Carlborg <doob at me.com> wrote:

> On 2013-06-10 09:23, Manu wrote:
>
>  That seems pretty awkward to me. Basically a hack.
>> A function pointer is not a delegate, so I don't see why that should be
>> used to describe one.
>>
>
> It depends on how you look at it. In D a delegate is a function pointer
> with a context pointer. In C++ a pointer to a member function is basically
> the same, the context pointer is just passed separately.


A function pointer is a pointer. A delegate is a pointer to a function and
a context pointer, ie, 2 pointers.
A pointer to a method is just a pointer to a function, but it's a special
function which receives a 'this' argument with a special calling convention.
It's definitely useful to be able to express a 'thiscall' function pointer.

 Also, extern(C++) delegates are useful too in their own right
>>
>
> To do what? As far as I know C++ doesn't have anything corresponding to a
> D delegate.


C++ has FastDelegate, which I use to interact with D delegates all the
time! ;)
extern(C++) delegate is required to specify the appropriate calling
convention, otherwise it's just a delegate like usual.

 I haven't needed to yet... but that doesn't mean it might not be useful.
>> It would probably be used in D for tight binding with other systems.
>> AngelScript binds to native code with member function pointers... just
>> off the top of my head.
>>
>
> Actually I don't see why you can't use a delegate for this. The only
> difference is that it won't be virtual.


I'm just trying to show that sometimes you don't want a delegate, you just
want a function pointer.
delegate's contain the function pointer I'm after, so I can access it
indirectly, but it's just not so useful. It's not typed (is void*), and you
can't call through it.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130610/5f874968/attachment.html>


More information about the Digitalmars-d mailing list