Function pointer callback from C

Tyler Knott tywebmail at mailcity.com
Sun Feb 25 22:31:49 PST 2007


Mike Johnson wrote:
> 
> Of course, I can pass void* data through the gpointer variable. But I 
> can't convert a class instance to an pointer... which would be really 
> *cough* cool *cough* :-) But maybe something else?
> 

You can't convert /instances/, but you can cast any object /references/ to void 
pointers (because references are just pointers with syntactic sugar that hides 
all the details).  When you cast back from void* to a class type, D even checks 
to make sure it's a sane cast (the cast will return null if it's not sane).  The 
only caveat is that you're going to be careful to keep a reference to that 
object in memory the GC is aware of, otherwise it could get prematurely 
collected and cause weird runtime crashes.


More information about the Digitalmars-d-learn mailing list