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