This works:

abstract class Addon {
    public void activate() {
    }
}

class A: Addon {}
class B: Addon {}

void main() {
    Addon[2] addons = [new A(), new B()];
}

This works too:

    Addon[] addons = [new A(), new B()];

I am happy to report that even the following works with dmd 2.069.0-b2:

    auto addons = [new A(), new B()];

I think the last one used to not work. Apparently now their "common type" is inferred correctly.

Ali

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


Reply via email to