D should have a root interface
Frank Benoit
keinfarbton at googlemail.com
Mon Jul 28 14:14:58 PDT 2008
// user lib
interface List{
void add(Object);
}
interface ArrayList : List{
void add(Object){}
}
// calling code
List list = ...
IFile file = ... // interface type
list.add( file ); // compile error
list.add( cast(Object) file );
This makes problems when one want to add() an interface instance. A cast
to Object is necessary. This is so ugly.
If there would be at least an empty root interface for all D interfaces,
this can be used for method signatures.
// D runtime and used by compiler
interface IObject {
}
// user lib
interface List{
void add(Object);
void add(IObject);
}
interface ArrayList : List{
void add(Object){ ... }
void add(IObject io){ add(cast(Object)io); }
}
This would not break any code and helps to make the calling code less casty.
More information about the Digitalmars-d
mailing list