Say I have type and a function look like this:

class Foo
{
    void* data;

    Foo clone ()
    {
        auto c = new Foo;
        c.data = data;

        return c;
    }
}

void bar (Foo foo)
{
    auto c = foo.clone();
    ...
}

Since I'm not changing anything on "foo" I thought that it could be a good idea to declare it as const.

void bar (const Foo foo)
{
    auto c = foo.clone();
    ...
}

In this case I also have to make "clone" const as well. Which is fine sine "clone" doesn't change any of the fields.

class Foo
{
    void* data;

    Foo clone () const
    {
        auto c = new Foo;
        c.data = data;

        return c;
    }
}

But now when I compile this code I get this error:

Error: cannot implicitly convert expression (this.data) of type const(void*) to void*

Any idea how to solve this? Or would I need to drop const.

--
/Jacob Carlborg

Reply via email to