On Wednesday, 22 November 2017 at 15:07:08 UTC, Tim Hsu wrote:
I am a C++ game developer and I want to give it a try.

It seems "this" in Dlang is a reference instead of pointer.

How can I pass it as void *?

void foo(void *);

class Pizza {
public:
    this() {
        Pizza newone = this;
        // works but newone is actually not this pizza.
        foo(&newone);
        // this does not work..
        foo(this);
    }
}

void main() {
    Pizza pizza = new Pizza();
    // this works...
    foo(&pizza);
}

Note that all the examples and advice in this thread apply to _classes_, not to structs.

The 'this' in a class is a pointer, since classes are reference types (like the 'this' pointer in C++) so you can cast it to a void* directly.

The 'this' in a struct is a value, since structs are value types. So if you want the address of the struct from within one of the struct's methods you need to use the & operator (then it becomes a pointer and you can cast it to a void* .

Reply via email to