Virtual base classes are a tool for joining the representations of common
ancestors in a class lattice. They come at a cost in computational,
conceptual, and usability complexity.
I can't see the purpose for the instances of virtual inheritance in
LilyPond (without multiple inheritance, there can't be much of an effect).
#include "engraver.hh"
#include "translator-group.hh"
-class Engraver_group : public virtual Translator_group
+class Engraver_group : public Translator_group
{
protected:
vector<Grob_info> announce_infos_;
#include "context.hh"
#include "pqueue.hh"
-class Global_context : public virtual Context
+class Global_context : public Context
{
PQueue<Moment> extra_mom_pq_;
Output_def *output_def_;
typedef void (Performer:: *Performer_method) (void);
-class Performer_group : public virtual Translator_group
+class Performer_group : public Translator_group
{
public:
VIRTUAL_COPY_CONSTRUCTOR (Translator_group, Performer_group);