On Thursday, 22 January 2015 at 13:06:42 UTC, Zaher Dirkey wrote:
See example bellow, i want to pass object to function nullIt and want this function to null it.

----
import std.stdio;

static if (!is(typeof(writeln)))
        alias writefln writeln;


class MyClass{
        
}

void nullIt(ref Object o)
{
        o = null;
}

void main()
{
        auto o = new MyClass();
        
        nullIt(o);
        
        if (o is null)
                writeln("It is null");
}

Thanks in advance.

o needs to be typed as Object:

    Object o = new MyClass();
    nullIt(o);

If the compiler accepted your original code, it would be possible to assign a non-MyClass to o:

    void messWithIt(ref Object) o) {o = new Object;}
    auto o = new MyClass();
messWithIt(o); /* If this compiled, o would be typed as MyClass, but would not actually be a MyClass. */

Reply via email to