On Tuesday, 8 April 2014 at 15:18:20 UTC, Steven Schveighoffer wrote:
On Tue, 08 Apr 2014 10:52:01 -0400, Spacen Jasset <spacenjas...@mailrazer.com> wrote:

I am trying to use file in a class. It doesn't seem to work. File is a struct. Are you not supposed to new structs anymore? The examples seem to use auto, but that isn't going to work in this situation.

Is File a struct to take advantage of Raii?

import std.stdio;

class X
{
    this()
    {
        f = new File("test2", "wt");
    }

    File f;
}


void main()
{
    X x = new X;
}

C:\temp>dmd file.d && file.exe
file.d(7): Error: constructor std.stdio.File.this (shared(_iobuf)* handle, strin g name, uint refs = 1u, bool isPopened = false) is not callable using argument t
ypes (File*)

DMD32 D Compiler v2.065

Just a word of caution, I don't think the RAII semantics of File work properly in multithreaded code when the File is destroyed by the GC.

-Steve

What do you mean by don't work? I can see that it won't be RAII anymore since there is no stack scope. However, I expect it to get closed properly - as and when the containing object is collected, or when you use the scope keyword with a class object.

Is this not so?

Reply via email to