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) |