On Thursday, 23 May 2013 at 16:27:19 UTC, Gary Willoughby wrote:
Why won't the following code compile? Here's the error:

filewatcher.d(21): Error: cannot implicitly convert expression (new File(file, "r")) of type File* to shared(_iobuf)*

/**
 * Imports.
 */
import std.stdio;

/**
 * A class to watch for changes in a file.
 */
class Example
{
        /**
         * Member variables.
         */
        private FILE* _file;

        /**
         * Constructor.
         */
        public this(string file)
        {
                this._file = new File(file, "r");
        }
}

/**
 * Imports.
 */
import std.stdio;

/**
 * A class to watch for changes in a file.
 */
class Example
{
        /**
         * Member variables.
         */
        private File _file;

        /**
         * Constructor.
         */
        public this(string file)
        {
                _file = File(file, "r");
        }
}

File is a wrapper around a FILE*, it's not the same as a FILE*

No need for new, File is a struct, new is (normally) for classes. No need for "this.", although there's no harm in it.

Reply via email to