virtual method pointer

Alex Rønne Petersen xtzgzorex at gmail.com
Thu May 3 11:54:28 PDT 2012


On 03-05-2012 20:46, Gor Gyolchanyan wrote:
> I need to get a pointer to a virtual method, which is in turn a
> function pointer, being set by virtual method binding.
> Can anyone, please, tell me how to get it? Taking the delegate of the
> method won't do, because I need it to behave exactly as a virtual
> method call, except I pass the "this" explicitly.
> I need this in an event handling mechanism I'm making. You derive from
> the Sink class, passing your static type to the constructor, which
> scans your virtual methods, that conform to specific requirements and
> extracts them into an array, which later uses to dispatch the incoming
> events.
> It will feel much like a run-time virtual template method.
>

import std.stdio;

class A
{
     void foo()
     {
         writeln("foo called");
     }
}

void main()
{
     auto a = new A();
     auto fn = &a.foo;
     auto ptr = fn.funcptr;
     (cast(void function(A))ptr)(a);
}

Prints "foo called".

-- 
- Alex


More information about the Digitalmars-d mailing list