Using std.stdio.File in a class

Steven Schveighoffer schveiguy at yahoo.com
Tue Apr 8 08:18:20 PDT 2014


On Tue, 08 Apr 2014 10:52:01 -0400, Spacen Jasset  
<spacenjasset at 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


More information about the Digitalmars-d-learn mailing list