Automatic method overriding in sub-classes

Tofu Ninja via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 27 01:05:02 PDT 2015


On Tuesday, 27 October 2015 at 07:52:27 UTC, Jacob Carlborg wrote:
> [...]
> I don't think this is possible. Think of code looking like this:
>
> // Imagine not having access to the source code "createA"
> A createA()
> {
>     new B;
> }
>
> void inspectA(A a)
> {
>     a.bar();
> }
>
> How should the compiler know that when instantiating/calling 
> "bar", T should be set to B? The compiler might not even know 
> about B exists at all. Even if the compiler does have access to 
> the complete source code it would, most likely, need to do a 
> full program analyze to figure out the type of T, which is 
> quite complicated.

The method is instantiated when the subclass is defined so T 
would obviously be right on hand. Sub-classing a class with an 
auto override method would implicitly instantiate and override 
the method. Calling a.bar() would have no problems because bar 
would be virtual.


More information about the Digitalmars-d mailing list