Hallo!
Mein Problem ist eine Mehrfachvererbung mit gemeinsamer Basisklasse, allerdings nicht der klassische Diamant. Eine Seite erbt direkt von der Basisklasse, auf der anderen hängt noch eine Klasse dazwischen. Ich denke ein Beispiel verdeutlicht das am besten:
class Base {
protected:
int a;
}
class Dev : public Base {};
class Join : public Base, public Dev {
...
// Zugriff auf direkt von Base geerbtes a?
...
};
oder grafisch
Base
| \
| \
| Dev
| /
| /
Join
Jede Instanz der Klasse ‚Join‘ enthält insgesamt 2 Instanzen von ‚Base‘, was auch so beabsichtigt ist. Nur, wie erkläre ich dem Compiler welche der beiden Instanzen ich ansprechen möchte? Ein ‚Base::a‘ ist ja leider auch nicht eindeutig, genauso wenig wie Casts.
Ich befürchte inzwischen die Struktur nochmal komplett über den Haufen werfen zu müssen, weil es schlicht nicht geht…