C++ Mehrfachvererbung mit gleichen Membermethoden
Verfasst: 02.07.2013, 13:02
Die Frage hat erstmal keinen praktischen Hintergrund sondern entstand mehr aus einer theoretischen überlegung heraus.
Beim Aufruf von d.who() meckert der compiler logischerweise dass er den Aufruf wegen Mehrdeutigkeit nicht auflösen kann.
Meine Frage jezt: Was wäre hier der Ideale weg dem Compiler zu sagen welche Basisimplementierung er aufrufen soll.
Spontan fällt mir ein:
Die abgeleitete Klasse auf die entsprechende Basisklasse casten -> nicht schön aber funktioniert
Die Mehtode who() in der abgeleiteten Klasse so implementieren das die entsprechende Basismethode aufgerufen wird.
Kennt jemand noch weitere Möglichkeiten solche Mehrdeutigkeiten möglichst elegant aufzulösen?
Code: Alles auswählen
#include <iostream>
class B1
{
public:
B1(void) {}
~B1(void){}
virtual void who() {
std::cout << "B1" << std::endl;
}
};
class B2
{
public:
B2(void) {}
~B2(void){}
virtual void who() {
std::cout << "B2" << std::endl;
}
};
class Derived: public B1, B2
{
public:
Derived(void) {}
~Derived(void){}
};
int main(void) {
Derived d;
d.who()
}
Meine Frage jezt: Was wäre hier der Ideale weg dem Compiler zu sagen welche Basisimplementierung er aufrufen soll.
Spontan fällt mir ein:
Die abgeleitete Klasse auf die entsprechende Basisklasse casten -> nicht schön aber funktioniert
Die Mehtode who() in der abgeleiteten Klasse so implementieren das die entsprechende Basismethode aufgerufen wird.
Kennt jemand noch weitere Möglichkeiten solche Mehrdeutigkeiten möglichst elegant aufzulösen?