struct opCast to void* and back
Robert Clipsham
robert at octarineparrot.com
Sun Apr 11 04:27:38 PDT 2010
On 11/04/10 10:46, Nrgyzer wrote:
> Hello everyone,
>
> how can I cast a struct to void* and back to my struct? I have the following struct:
>
> struct myStruct {
>
> char[] structName;
>
> public char[] toString() {
> return structName;
> }
>
> void* opCast() {
> return&this;
> }
>
> }
>
> myStruct test = myStruct(); // ok
> test.structName = "Example struct"; // ok
> void* temp = cast(void*) test; // ok
> writefln(cast(myStruct) temp); // failed
>
>
> Thanks for solutions& help :).
Try *cast(MyStruct*). In opCast you are returning &this, which is of
type MyStruct* until it is implicitly cast to void*. In the writefln()
you then cast it back to MyStruct*, and dereference it so you can use
it. In your version you are trying to cast from a pointer to the struct
to the actual struct, which is why it doesn't work.
More information about the Digitalmars-d
mailing list