On Thursday, 12 September 2013 at 11:29:22 UTC, Jacob Carlborg
wrote:
On 2013-09-12 11:28, Namespace wrote:
But if I try to write 'override' before [1], I get this error
message:
Error: function T4._apply cannot override a non-virtual
function
This seems inconsistent. I really overwrite the method, and
then I put
it in a package label.
I think the error message is pretty clear. You cannot override
a function that isn't virtual. Private and package methods are
not virtual. Example:
class Base
{
void foo ()
{
writeln("Base.foo");
}
}
class Sub : Base
{
package void foo ()
{
writeln("Sub.foo");
}
}
void main ()
{
auto sub = new Sub;
sub.foo(); // prints "Sub.foo" as expected
Base base = sub;
base.foo(); // prints "Base.foo"
}
Obvious. But what happend? Is the original _apply hidden?