On Saturday, 1 December 2012 at 11:06:02 UTC, Artur Skawina wrote:
On 12/01/12 03:48, Jonathan M Davis wrote:
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.

   *cast(void**)&O // assuming O is a class

artur

Duh! I should have been able to think of that ;/

Thanks.

Reply via email to