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