On 25/04/10 14:47, Joseph Wakeling wrote:
Robert Clipsham wrote:
This should do what you want:

Thanks! :-)

Is it possible to do this with an interface instead of a base class?
I'm not familiar with how the former work ...

Best wishes,

     -- Joe

Yes it is, providing the base doesn't implement any methods, eg:

----
interface I
{
  int foobar();
  // The following line will cause an error when uncommented, as
  // you cannot implement methods in an interface
  // void baz() {}
}

class C : I
{
  int foobar() { return 1; }
}

class D : I
{
  int foobar() { return 2; }
}

import std.stdio;

void main()
{
  I[] arr;
  arr ~= new C;
  arr ~= new D;
  foreach( el; arr )
    writefln( "%d", el.foobar() );
}
----
Prints:
1
2

You could also use an abstract class instead of an interface if you want to implement some of the methods.

Reply via email to