Ich suche nach einer sauberen Art, dies seit langer Zeit zu tun. In meinem Problem gibt es 3 Klassen, die keine gemeinsamen Eltern teilen, aber alle Methoden mit dem gleichen Namen haben (A.doSomething, B.doSomething, C.doSomething). Mit der gleichen Funktionssignatur wird die Klasse D, die von A herrührt und die Methode doSomething() verwendet, für E, die von B oder C erbt, gleich aussehen. HierMehrere Vererbungshierarchie
ist eine Skizze von dem, was ich möchte in der Lage sein zu tun:
class Base {
public:
void myMethod(void) { doSomething(); }
};
class Independent {
public:
doSomething();
};
clase Derived : public Base : public Independent {
(...)
};
int main(void) {
Derived *derivedObject = new Derived();
derivedObject->myMethod();
}
Bei diesem Problem Objekt vom Typ „Independent“ wird durch eine Bibliothek zur Verfügung gestellt, die ich nicht ändern kann. Ich möchte eine Basisklasse definieren, die Methoden verwendet, die später vererbt werden. Ich konnte keinen geeigneten Weg finden, dies mit virtueller Vererbung zu tun, ohne mehrdeutiges Kompilieren zu verursachen.
Können Sie Ihr Problem ein wenig deutlicher erklären? Ich sehe nur eine Methode namens "doSomething" in diesem Code-Snippet, aber Sie erwähnen drei Klassen, die es in der Beschreibung haben, und Sie sagen nicht, was die "myMethod" -Methode sein soll. –