const "override" and interfaces
gzp
galap at freemail.hu
Fri Oct 9 09:58:42 PDT 2009
I've tried to implement a const, non-const accessor for a class similar to c++:
a& at(int) const;
a at(i);
With class it works as expected
class C1
{
int a;
const int foo() { return 2; }
ref int foo() { return a; }
}
Than I wanted to do it using interfaces:
interface I1 {
const int foo();
ref int foo();
}
class C2 : I1
{
int a;
const int foo() { return a; }
ref int foo() { return 2; }
}
but it won't compile (the interface itself compiles but i could not write any class implementing the interface I1)
When inheriting interfaces do code won't even compile:
interface IConst {
const int foo();
}
interface IMutable : IConst {
ref int foo();
}
The compiler error i get (using dmd 2.032 on windows):
t2.d(71): Error: function t.IMutable.foo of type ref int() overrides but is not
covariant with t.IConst.foo of type const int()
t2.d(90): Error: function t.C2.foo of type ref int() overrides but is not covariant with t.I1.foo of type const int()
Is it a normal behavior, a bug or i've missed something ?
Thanks
More information about the Digitalmars-d
mailing list