Mehrfachvererbung
Mehrfacher Aufruf derselben Methode
der virtuellen Basisklasse durch die abgeleiteten Klassen
- Lösung:
Das kann nur verhindert werden, indem die virtuellen Methoden nicht auf
der Basis der virtuellen Methoden der Basisklassen definiert werden, sondern
ihre Funktionalität aus eigens dafür vorgesehenen, implementationsspezifischen
Methoden ,,zusammensetzen``:
// File: SingCall.h
#include <iostream.h>
class S {
int s;
protected:
void _print()
{ cout << s << "\n"; }
public:
S(int _s) : s(_s){}
virtual void print()
{ _print(); }
};