casting to a voldemort type

Adam D. Ruppe via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Mar 19 08:23:54 PDT 2016


On Saturday, 19 March 2016 at 15:10:56 UTC, Alex wrote:
>     void* funVoldemort(size_t my_size)

The term 'voldemort type' refers to a public type, just an 
unnamed one. What you have here is a pointer to a private type... 
and void* is something you often should avoid since the compiler 
doesn't help you with them. You can pass an entirely different 
object and the function would never know (until it crashes). It 
might look like a feature now, passing those size_t's around, but 
you'll probably find it buggy later...

> The question is, how to write the accompanied function in the 
> part, which should cast the pointer to the voldemort type?

You can't, the struct is too private to be seen. ff @ 20 and 
encapsulate it all in the same struct.

> What I already thought about is: writing a union inside the 
> struct, which is either my long or some other data. But this is 
> in general not possible, as the "other data" could be together 
> greater, then the long.

The compiler knows how to handle that, or you could use a wrapped 
pointer and ordinary private definitions so the outside doesn't 
pry too far.





More information about the Digitalmars-d-learn mailing list