And finally: [code] import std.stdio;
interface Transformable { public: void transform(); } mixin template _Transform() { public: this() { writeln("Transform Ctor"); } void transform() { writeln("transformiere"); } } abstract class Transform : Transformable { mixin _Transform; } abstract class Drawable { public: void draw() { writeln("zeichne"); } } class Shape : Drawable, Transformable { public: //mixin Transform; mixin _Transform; this() { writeln("Shape CTor"); } } class Texture : Transform { public: override void transform() { writeln("rendere texture"); } } void test_drawable(Drawable d) { d.draw(); } void test_transformable(Transformable t) { t.transform(); } void main() { Shape s = new Shape(); test_drawable(s); test_transformable(s); Texture t = new Texture(); //test_drawable(t); // fails as expected test_transformable(t); } [/code]