Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Polymorphie bei Mehrfachvererbung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.09.2009, 08:27 Uhr
Lensflare



Hallo

Ich habe ein Problem bei der Verwendung von Mehrfachvererbung:


C++:
class A {
public:
    virtual void foo() = 0;
};
class A1 : public A {
    virtual void foo() {}
};

class B : public A {};
class B1 : public B, public A1 {};

int main() {
    B *b[10]; //polymorpher container für subklassen von B
    /* ... */
    b[0] = new B1();
}



Compiler sagt:

Code:
cannot allocate an object of type `B1' because the following virtual functions are abstract:
virtual void A::foo()



Also ich verstehe nicht warum foo hier als abstrakt gilt, weil B1 ja von A1 ableitet und A1 implementiert foo.
Die Reihenfolge der Ableitung von B1 zu ändern hat auch nichts gebracht.

Wie kann man Polymorphie mit so einer Vererbungsstruktur umsetzen?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.09.2009, 14:46 Uhr
0xdeadbeef
Gott
(Operator)



C++:
class A1 : virtual public A {
    virtual void foo() {}
};

class B : virtual public A {};


...sonst hast du zwei Instanzen von A im Objekt von denen nur eine eine foo-Methode hat.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.09.2009, 15:08 Uhr
Lensflare



Ah, danke. Hat geholfen.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: