我将这个问题浓缩为一个小的代表性样本:
import std.stdio;
class Foo
{
private int f;
}
class State
{
private Foo foo;
const Foo getFoo()
{
return foo; // This line here.
}
}
void main()
{
auto s = new State;
writeln(s.getFoo());
}
我把那个代码放在test.d
.
$ gdmd test.d
test.d:13: Error: cannot implicitly convert expression (this.foo) of type const(Foo) to test.Foo
我知道它告诉我用 转换返回值cast(test.Foo)foo
,但是为什么呢?为什么它将成员解释为类型const(Foo)
,为什么需要我抛弃它const
?我觉得我在这里做错了什么。