jokey2
Erfahrenes Mitglied
Da habe ich wohl was verwechselt, oder? Naja, man lernt nie aus.In Java wurde die Mehrfachvererbung im Gegensatz zu C++ abgeschafft
Aber in C++ gibt es definitv Mehrfachvererbung.

Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Da habe ich wohl was verwechselt, oder? Naja, man lernt nie aus.In Java wurde die Mehrfachvererbung im Gegensatz zu C++ abgeschafft
Aber in C++ gibt es definitv Mehrfachvererbung.
Jens Hibbeler hat gesagt.:Hallo,
..vielleicht noch als Ergänzung:
Wenn ich die Methode in der zuletzt abgeleiteten Klasse nicht implementiere bekomme ich:
[Linker Fehler] Unresolved external 'PersistAdaptArtikel::ChangeAntwortHdl(const Link&, ArtikelPosition *)' referenced from O:\KUBIS\CLIENT\OBJ.32\PERSIST\ARTKLPO1.OBJ
Du deklarierst die Methode ChangeAntwortHdl aber implementierst sie nicht, das resultiert dann in einem Linkerfehler. Lass doch die Deklaration einfach weg:Code:class PersistAdaptArtikel : public PersistAdapter, public PersistierungsIntArtikel { public :bool bestandsAnfrage(Link & nAntwortHdl, ArtikelPosition *artP); public :Link ChangeAntwortHdl ( const Link& neuerAntwortHdl, ArtikelPosition *artP); };
class PersistAdaptArtikel : public PersistAdapter, public PersistierungsIntArtikel
{
public :bool bestandsAnfrage(Link & nAntwortHdl, ArtikelPosition *artP);
};
Entferne ich zusätzlich die Deklaration in dem Header der Klasse gilt diese als Abstrakt.
#include <iostream>
using namespace std;
class A{
public:
virtual void foo() = 0;
};
class B : public A{
public:
void foo(){
cout << "Fooing..." << endl;
}
};
class C : public B{
};
int main(){
A* c = new C();
c->foo();
delete c;
}
jokey2 hat gesagt.:In dem Beispiel ist 'c' aber von Typ A*. Dann gibt es keinen Zugriff auf Member von C ohne Typecast. Eigentlich sollte es auch mitgehenCode:C* c = new C();
jokey2 hat gesagt.:Aber Zugriff auf Member von C (ich meine, Member, die nur in C deklariert sind, nicht in A oder B) hat man so nicht.
RedWing hat gesagt.:Und falls doch mal ein cast notwendig ist dann castet man halt mit dem
dynamic_cast Operator...
Wenn man es nach deinem Vorschlag macht dann macht auch
das virtual keinen Sinn mehr und man kann gleich normale Methoden
implenetieren...
Interface A<-----Klasse B
n n
| |
| |
Interface C<-------Klasse D