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