main überschreiben?
-
Hallo zusammen,
hab in der Suche dazu leider nix gefunden und daher folgende Frage:
Wenn ich mir ne abstrakte Applikationsklasse schreiben will, mit:
virtual int main() = 0;oder mit:
public: vodi init(); private: int main(); // ruft init()im header, damit meine eigentlichen Applikationsklassen, die davon ableiten sich nicht mehr um die main-Methode kümmern müssen, funktioniert das dann?
In der abstrakten Basisklasse wird in main() z.B. die Initialisierungsmethode gerufen.
Hab so das Gefühl dass der Linker beim GCC was dagegen hat (hab leider gerade die genaue Fehlermeldung nicht parat)!
Und noch eine Frage dazu: Muss ich, wenn ich von einer Klasse ableite und einige/alle ihrer virtual und pure virtual Methoden implementieren will, muss ich dann in der ableitenden Klasse diese Methoden mit der gleichen Signatur nochmal im Headerfile angeben (eigentlich sind sie ja schon durch die Ableitung implizit gegeben)?
Vielen Dank schon einmal
Ciao
-
Du musst die Funktion die du überschreiben willst nochmal extra in deiner Klasse declarieren ... aber klar doch

Und du kannst auch, wenn du anders nicht zurechtkommst, einen anderen Einstiegspunkt als main nehmen ...
-
Danke!
Ich würde schon anders zurechtkommen, wollte mir nur ne abstrakte Applicationklasse machen, die immer schon einen Einstiegspunkt hat, aber das scheint laut Linker nicht zu klappen!
Deklariert ist die Methode in der abgeleiteten Klasse auch nochmals (virtual muss ja davor, oder?).
Ich glaub ich weiss wieso! Hab main() derzeit noch pure virtual und in der abgeleiteten Klasse fehlt bei der Implementierung der Klassenname mit :: vor der Implementierung von main()!
Muss ich glatt nochmals probieren!
Aber halt!
Kann ich
int main()als Einstiegspunkt überhaupt als Klassenmethode deklarieren und implementieren, oder muss diese Funktion immer allein ohne Klasse:: stehen?
Was passiert, wenn eine Klasse und eine abgeleitete Klasse main() implementiert?
Meckert da der Compiler oder Linker?Ciao