Interaction of inheritance with property functions
Luís Marques
luis at luismarques.eu
Fri Jun 8 01:07:17 UTC 2018
I had something like this:
class Bits
{
int width()
{
return _width;
}
void width(int _width)
{
this._width = _width;
}
int _width;
}
class Bool : Bits
{
// make sure a Boolean is always 1 bit
override int width()
{
assert(_width == 1);
return _width;
}
}
I was surprised that I could not do this:
B b = new B;
b.width = 42;
Instead, I had to do this:
B b = new B;
(cast(Bits) b).width = 42;
Or I had to add a redundant setter function to Bool.
Shouldn't the property functions' resolution logic take into
account the inherited functions? I had assumed that was the case
(and I was confused by misleading error messages), and that seems
like the more intuitive semantics to me.
More information about the Digitalmars-d
mailing list