Changing by ref a class passed in function
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jan 22 06:29:58 PST 2015
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. */
More information about the Digitalmars-d-learn
mailing list