Compile-type array of classes?

Gordon me at home.com
Sun Feb 23 12:34:05 PST 2014


Hello,

I'm sure this can be done, I'm just not sure what are the correct 
terms to search for...

Given one interface, and multiple implementation classes, I want 
to create a list of the classes (in compile time).
A contrived example:
===
interface Animal
{
   static const string name() @property;
   void make_noise();
}

class Dog : Animal
{
    static const string name() @property { return "dog" ; }
    void make_noise() { writeln("Woof"); }
}

class Cat : Animal
{
    static const string name() @property { return "cat" ; }
    void make_noise() { writeln("Meow"); }
}
===

What I want is:

===
static const xxxxx[] available_animals = [ dog, cat ];
===

and then:

===
foreach (a; available_animals) {
    writeln("We have a ", a.name);
}
===

Given that "name" is a static member function, it should be 
doable.
But I'm not sure about the correct syntax of defining 
"available_animals".

Any suggestions are welcomed,
  -gordon


More information about the Digitalmars-d-learn mailing list