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.