Einige Probleme bei mehrfacher Vererbung (1/3)

Wie schon angedeutet kann es bei mehrfacher Vererbung zu Problemen kommen, die mitunter nicht leicht zu lösen sind, oder den Code schwieriger machen. Hier soll nur auf wenige Probleme eingegangen werden, bei intensiver Nutzung der mehrfachen Vererbung sollten entsprechende Bücher zu Rate gezogen werden.

Mehrdeutigkeiten bei mehrfacher Vererbung

Durch die mehrfache Vererbung kann es zu Mehrdeutigkeiten kommen. Haben zwei oder mehr Basisklassen das gleiche Element oder die gleiche Methode (wobei Gleichheit sich bei Methoden außer auf den Namen auch noch auf die gleiche Parameterliste bezieht), so kommt es bei einem Aufruf zu einer Mehrdeutigkeit.

Diese kann innerhalb von Klassenmethoden aufgelöst werden, indem man den Klassennamen direkt vor dem Methoden- bzw. Elementnamen angibt, getrennt durch den Scope ::-Operator. (basisklasse::methode(parameterliste)). Dabei ist es nicht notwendig, daß die beschriebene Klasse diesen Namen direkt zur Verfügung stellt. Es genügt, wenn eine ihrer Basisklassen diesen Namen implementiert.

class A
{
  public:
    int x;
    void f();
    void g(int);
};