Konstruktor einer abstrakten Klasse

Barade

Barade

Kellerkind
Wieso kann ich im Konstruktor einer abstrakten Klasse keine rein virtuelle Methode dieser aufrufen?
Code:
//Wird im Konstruktor aufgerufen
setWindowTitle(title()); //title() ist eine rein virtuelle Methode, die einen QString liefert
Hab ich jetzt irgendwas falsche verstanden, was abstrakte Klassen angeht?
Ich wollte den Gestalter der Subklasse entscheiden lassen, welchen Titel das Fenster hat, indem er die Methode definiert, die den entsprechenden QString liefert.
Man könnte diesen natürlich auch im Konstruktor als Parameter übergeben, ich wollts aber einfach mal so testen und bin dann auf Compiler-Fehler gestoßen.
 
Soweit ich informiert bin, ist es in C++ nicht möglich, aus dem Konstruktor eine virtuelle Member-Funktion aufzurufen, weil zu diesem Zeitpunkt die Tabelle, die den virtuellen Funktionen eine Implementierung zuordnet noch nicht initialisiert ist.
Siehe hier, Seite 21: http://www.fefe.de/c++/c++-talk.pdf

Du musst das wohl anders machen, oder dir eine andere Programmiersprache suchen.
 
Danke für die schnelle Hilfe.
Eine andere Sprache werde ich wohl kaum verwenden aber das lässt sich schon anders regeln.
 

Ähnliche Themen

[HowTo] Debian Installation mit Installer über SSH

C++ Klausur durchgefallen

Compileroptionen

Zurück
Oben