On Tuesday, 26 November 2013 at 17:50:12 UTC, Ali Çehreli wrote:
On 11/26/2013 09:32 AM, Agustin wrote:I'm trying to move from Java to D, and i have some like this:interface A { public bool isCancelled(); public void setCancelled(bool value); } class B { public bool isCancelled(); protected void setCancelled(bool value); } But when i do class C : B, A {} I get Engine/Main.d(6): Error: class Main.C interface function 'bool isCancelled()' is not implemented Engine/Main.d(6): Error: class Main.C interface function 'void setCancelled(bool value)' is not implementedYou have to provide the implementations of the interface functions either in B or C. I think you actually tested with B implementations though:class B { public bool isCancelled() { // implemented return false; } protected void setCancelled(bool value) { // implemented } } Still the same error...Unless you want to implement the functions on C as well, then C should not inherit from A. A is already inherited by B:class C : B // <-- no A {} Ali
Oh i forgot to add the implementation here, but its there, what i want to do is with an interface be able to change "protected" to "public", this is possible using Java but i don't know if possible using D.
class C : B, A -> setCancelled() is changed from protected to public
{
}
