fehler mit virtual
-
Siehe hier http://www.learncpp.com/cpp-programming/eight-c-programming-mistakes-the-compiler-wont-catch/ "8) Calling virtual functions in constructors": Wie würde man es richtig machen?
-
dfsfsfd schrieb:
Calling virtual functions in constructors": Wie würde man es richtig machen?
Indem man sie nicht aufruft
Mögliche Alternativen, um ähnliche Effekte zu erhalten, werden in Effective C++ diskutiert. Ich spare mir mal eine Wiedergabe, in der Hoffnung, dass du das Buch hast (und das solltest du).
Außerdem findet man auch direkt zig gute Antworten bei Google zu dieser Frage:
Google: C++ Calling virtual functions in constructors
-
Besteht das Problem auch bei anderen Memberfunktionen außer dem Konstruktor?
-
xxggfd schrieb:
Besteht das Problem auch bei anderen Memberfunktionen außer dem Konstruktor?
Gegenfrage: Kannst Du das Problem in eigenen Worten wiedergeben?
-
Wenn ich eine virtuelle Memberfunktion aus dem Konstruktor aufrufe, ruft er anscheinend die der Basisklasse und nicht die von evtl. vererbten Klassen auf. Gilt das auch, wenn ich eine virtuelle Memberfunktion aus einer anderen Memberfunktion als dem Konstruktor aufrufe? (Vermutlich nicht, ich wollte aber mal nachfragen.)
-
dfgddf schrieb:
Wenn ich eine virtuelle Memberfunktion aus dem Konstruktor aufrufe, ruft er anscheinend die der Basisklasse und nicht die von evtl. vererbten Klassen auf. Gilt das auch, wenn ich eine virtuelle Memberfunktion aus einer anderen Memberfunktion als dem Konstruktor aufrufe? (Vermutlich nicht, ich wollte aber mal nachfragen.)
Dann wären virtuelle Methoden ja supersinnlos().
Eigentlich wollte ich von Dir hören warum dass in C++ so ist... Dann wäre auch klar, dass es nur Konstruktoren betrifft.
Meyers Item zu diesem Thema gibts es auch online.