class BallF { public: virtual void printMessage () = 0; }; class BallCanvas : BallF { }; class BallTShape : public TShape, BallF { }; class Ball { public: Ball(BallF b) { } };