Robert Clipsham Wrote: > HOSOKAWA Kenchi wrote: > > Robert Clipsham Wrote: > > > >> If you want this then you need abstract classes. > >> http://www.digitalmars.com/d/1.0/attribute.html#abstract > >> > >> abstract class A > >> { > >> abstract void f(int); > >> final void f_twice(int i) { f(i); f(i); } > >> } > >> > >> class B : A { } > >> > >> (new B).f_twice(1); > > > > Unfortunately the derived class have already inherited another class in my > > code. > > I need interface inheritance. > > > > You could use a template mixin then: > > template MyInterfaceMethods() > { > final void f_twice( int i ) { f(i); f(i); } > } > > interface I > { > void f( int ); > } > > class A : I > { > mixin MyInterfaceMethods; > }
thanks for the solution but I think mixin is not better than global/final function. It requires to write mixin for each inherited classes, which usually increase binary size with duplicative function instances.
