www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Portable way to obtain member function pointer (and invoke it)?

reply =?ISO-8859-1?Q?Alex_R=F8nne_Petersen?= <alex lycus.org> writes:
Hi,

Is there a portable way to obtain a pointer to a member function and 
invoke it with the this reference? I seem to recall some discussion 
about this on the NG in the past, but can't find the thread now.

-- 
Alex Rønne Petersen
alex lycus.org
http://lycus.org
Jul 08 2012
next sibling parent Timon Gehr <timon.gehr gmx.ch> writes:
On 07/08/2012 09:57 PM, Alex Rønne Petersen wrote:
 Hi,

 Is there a portable way to obtain a pointer to a member function and
 invoke it with the this reference? I seem to recall some discussion
 about this on the NG in the past, but can't find the thread now.

auto mptr = function(Base o,Args args)=>o.member(args); mptr(this, args);
Jul 08 2012
prev sibling parent Benjamin Thaut <code benjamin-thaut.de> writes:
Am 08.07.2012 21:57, schrieb Alex Rønne Petersen:
 Hi,

 Is there a portable way to obtain a pointer to a member function and
 invoke it with the this reference? I seem to recall some discussion
 about this on the NG in the past, but can't find the thread now.

If you know both at compile time: auto func = &object.func; This will create a delegate with the this pointer and the function pointer. If you want to build it manually you can do that also: alias void delegate() func_t; func_t func; func.funcptr = GetFunctionPointer(); func.ptr = object; Kind Regards Benjamin Thaut
Jul 08 2012