get address of object if opCast is overridden
Jonathan M Davis
jmdavisProg at gmx.com
Sat Dec 1 11:26:27 PST 2012
On Saturday, December 01, 2012 18:43:22 Timon Gehr wrote:
> On 12/01/2012 06:23 PM, Jonathan M Davis wrote:
> > On Saturday, December 01, 2012 12:05:49 Artur Skawina wrote:
> >>> So, unless there's a way to do it without a cast, you're stuck. And I
> >>> have
> >>> no idea how you could possibly do it without a cast.
> >>>
> >> *cast(void**)&O // assuming O is a class
> >
> > Are you sure? I'd be _very_ wary of that, because references aren't the
> > same as pointers. I don't believe that there's any guarantee whatsoever
> > that that will work, even if it happens to work now (which it may or may
> > not).
> >
> > - Jonathan M Davis
>
> Certainly works now. Another workaround that would keep working if class
> references were not pointers is:
>
> ((Object o)=>cast(void*)o)(O) // assuming O is the class object
Ah, good point. Using Object would work just fine and doesn't rely on the
implementation details of references.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list