class Base
{
int number() { return _number; } // getter
int number(int value) { return _number; } // setter
private:
int _number;
}
class Extension: Base
{
override int number(int value) // override setter
{
return 0;
}
void method()
{
printNumber(this.number); // call base getter
// main.d(21): Error: function main.Extension.number (int) does not match parameter types ()
// main.d(21): Error: expected 1 arguments, not 0
}
}
Tries call overrided setter
Comment #1 by 2korden — 2009-04-18T19:23:40Z
Fake properties must die, all I can say.
Comment #2 by witold.baryluk+d — 2010-02-05T06:01:31Z
Actually setter in the base class is not needed to trigger this bug.
Also calling this.number() in method(), so adding call brackets, doesn't solve problem. So it is not only problem with setter/getter. This can lead to problem with perfectly valid code with no properties.
Comment #3 by razvan.nitu1305 — 2019-09-10T09:17:42Z
This bug report is invalid. You have to use alias to pull in the number overload set to Extension.
class Extension: Base
{
alias number = Base.number;
override int number(int value) // override setter
{
return 0;
}
void method()
{
printNumber(this.number); // calls Base.number
}
}