On Tuesday, 29 January 2013 at 05:36:31 UTC, estew wrote:
Hi,

Just started in D a week back after years of C/C++ head bashing and have to say language is fantastic.

I have a small misunderstanding regarding const...well ok, a fundamental misunderstanding by the looks of it:)

class A
{

ulong[] values;
...
const ulong[] getValue() const {
    return this.values;
}

}

But this fails to compile with the following message:
Error: cannot implicitly convert expression (this.values) of type const(ulong[]) to ulong[]

I just do not see it in the code. The function is const, so this.values is const, and I am just returning that as a const ulong[]. Am I not???


I don't get it? Any help explaining why this does not compile would be appreciated!


Hi,

This is a very common syntax trap where too many people fall. When you do const ulong[] getValue() const both const are qualifying this, and none the return value. So the error.

The correct declaration is :
const(ulong)[] getValue() const

or

const(ulong[]) getValue() const

I wish this syntax will be fixed, but I have no hope. We just will see the problem popping again and again I guess.

Reply via email to