I'm just experiement with D, that's all. ;)
Most of my questions here are just out of curiosity.

I have now this construct:

[code]
class smart_ptr {
private:
        A* _ptr;

public:
        this(A* ptr) {
                void* buffer = GC.malloc(A.sizeof);
                memcpy(buffer, ptr, A.sizeof);

                this._ptr = cast(A*) buffer;
        }

        ~this() {
                GC.free(this._ptr);
        }

        @property
        A* Ptr() {
                return this._ptr;
        }

        alias Ptr this;
}
[/code]

And that is how i use it (ATM):

[code]
A a = new A(42);
smart_ptr sptr = new smart_ptr(&a);
sptr.echo();

a = null;

sptr.echo();
[/code]

But how can i free the memory?
Bizarrely it cannot be delete in the dtor. o.O
Strange design.

Reply via email to