When I pass my struct to function something is going wrong. I don't know how to fix it.

Code:
import std.stdio;


void print(ref Vector v, string s){
                writefln("%s==%s    %s", &v.x, v.ptr, s);
}

struct Vector {
        int x;
        int* ptr;

        this(this) {
                ptr = &x;
                print(this, "postblit");
        }
}

void someFunc(Vector t) {
        print(t, "in someFunc");
}

void main() {
        auto tmpA = Vector();
        tmpA.ptr = &tmpA.x;
        print(tmpA, "start");

        someFunc(tmpA);
}


Result on my machine:
7FFF7D70BC00==7FFF7D70BC00    start
7FFF7D70BBF0==7FFF7D70BBF0    postblit
7FFF7D70BBD0==7FFF7D70BBF0    in someFunc

In the last line pointers are not matching. I thought that postblit will do the thing but it is not the case. How to make 'ptr' to be null or '&this.x' all the time?

Reply via email to