get address of object if opCast is overridden

Jonathan M Davis jmdavisProg at gmx.com
Fri Nov 30 18:48:28 PST 2012


On Saturday, December 01, 2012 03:05:00 js.mdnq wrote:
> Let O be an object with opCast overridden, then
> 
> 
> writeln(O); //prints string
> writeln(cast(void *)O)) // error, works fine if I comment out the
> opCast override
> writeln(&O) // address of pointer to O, not what I want.
> 
> I want to compare a few objects based on their location. (I know
> this is bad because of the GC, but I will probably pin them if I
> go this route)
> 
> It seems I have a difficult time getting the original behavior
> when something is syntactically overridden in D. I understand the
> point of cast(void *) not working when opCast is overridden but I
> then do not know how to still get the address.
> 
> Any Ideas?

For the moment, you're probably screwed. Certainly, if you overload opCast, 
then none of the normal casts work any more, which is a definite bug:

http://d.puremagic.com/issues/show_bug.cgi?id=5747

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.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list