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