Array of subclasses
Maxim Fomin via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 22 05:24:03 PDT 2015
On Thursday, 22 October 2015 at 11:02:05 UTC, DarkRiDDeR wrote:
>
> This variant works strangely. Example:
>
> abstract class Addon
> {
> public string name = "0";
> }
> class Users: Addon
> {
> override
> {
> public string name = "USERS";
> }
> }
> static final class Core
> {
> static:
> public Addon[] activated;
> public Users users;
>
> public void activate()
> {
> users = new Users;
> activated = [new Users, new Users];
> }
> }
>
> Core.activate();
> writeln(Core.users.name ~ "\n" ~ Core.activated[1].name);
>
> Out:
> USERS
> 0
First of all, the code does not compile with override. It is
impossible to override a data. Override should be removed.
The reason it works this way is that the first access is to base
class data while the second is to the derived data member.
More information about the Digitalmars-d-learn
mailing list