Pat002 - 39
Anfänger
(offline)
Dabei seit 10.2004
7
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:09 Uhr
|
|
Servus,
vielleicht kann mir ja hier jemand weiterhelfen. Und zwar will ich einen konstruktor einer unterklasse aufrufen. Dabei wird zuvor aber immer der Konstruktor der Basisklasse aufgerufen, was ich aber nicht will. Kann man das Ganze irgendwie umgehen oder ist das nicht möglich?
|
|
Verdammnis - 47
Champion
(offline)
Dabei seit 06.2007
2220
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:20 Uhr
|
|
Es gibt C++ Gruppen....da wird dir am besten geholfen.
Bitte hier Fußzeile einfügen.
|
|
Snowballed
Experte
(offline)
Dabei seit 02.2011
1866
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:21 Uhr
|
|
Zitat von Verdammnis: Es gibt C++ Gruppen....da wird dir am besten geholfen. Er kann dir ja dann mal Real Life Programmieren ...
When in doubt, Barspin it.
|
|
bredator - 41
Champion
(offline)
Dabei seit 03.2008
5319
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:36 Uhr
|
|
Zitat von Snowballed: Zitat von Verdammnis: Es gibt C++ Gruppen....da wird dir am besten geholfen. Er kann dir ja dann mal Real Life Programmieren ...
Oder dir eine KI. Besser als gar keine...
Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.
|
|
Pratsch - 31
Champion
(offline)
Dabei seit 07.2009
2821
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:37 Uhr
|
|
Zitat von Pat002: Servus,
vielleicht kann mir ja hier jemand weiterhelfen. Und zwar will ich einen konstruktor einer unterklasse aufrufen. Dabei wird zuvor aber immer der Konstruktor der Basisklasse aufgerufen, was ich aber nicht will. Kann man das Ganze irgendwie umgehen oder ist das nicht möglich?
So ist das nicht möglich, da bei dem Aufruf der abgeleiteten Klasse die Basisklasse mit aufgerufen wird.
awa
|
|
Student - 44
Anfänger
(offline)
Dabei seit 02.2003
3
Beiträge
|
|
Geschrieben am: 24.04.2011 um 11:55 Uhr
|
|
Mach doch im Konstruktor der Basisklasse einfach nichts, sondern ruf dort eine Funktion Init() z.B. auf. In der Funktion machst du die Dinge, die bisher im Konstruktor waren.
Diese Funktion machst du in der Basisklasse virtual und überschreibst sie in der abgeleiteten Klasse. Dort lässt du sie einfach was anderes oder gar nichts machen.
Das sollte sich genau so verhalten, wie du es haben willst.
|
|
ItsPayne - 41
Profi
(offline)
Dabei seit 12.2008
997
Beiträge
|
Geschrieben am: 24.04.2011 um 12:08 Uhr
Zuletzt editiert am: 24.04.2011 um 12:10 Uhr
|
|
Du kannst doch auch mehrere konstruktoren anlegen (überladen). Dann legst halt zusätzlich nen leeren in der basisklasse an und rufst den dann explizit im konstruktor der erbenden klasse auf.
Aber allgemein klingt das bei dir nach einem konzeptproblem! Du solltest dein klassendesign überdenken. Denn es ist eigentlich nicht sinn der sache, dass die "basisfuntionalität" nicht "konstruiert" werden soll. Die basisfunktionalität sollte immer gleich bleiben. Die spezifische funktionalität implementiert dann die abgeleitete klasse und entsprechend solltest du spezifische parameter beim konstruktor der abgeleiteten klasse übergeben. und einen passenden basiskonstruktor aufrufen.
Vielleicht sollte deine basisklasse auch eher abstrakt definiert sein? Das macht zumindest im klassischen modell meistens sinn, da ich idr. eben kein "flugzeug" instanzieren will, sondern eine konkrete ableitung davon, z.b. ne "747".
Wenn du lange genug in einen Abgrund blickst, blickt der Abgrund auch in dich hinein.
|
|
__Technoo
Halbprofi
(offline)
Dabei seit 03.2010
289
Beiträge
|
|
Geschrieben am: 24.04.2011 um 13:08 Uhr
|
|
Frag halt Yasin :D
Super Tofuboy ftw. ! ! (:
|
|
Akuu_
Halbprofi
(offline)
Dabei seit 01.2011
254
Beiträge
|
|
Geschrieben am: 24.04.2011 um 13:59 Uhr
|
|
warum?
weil er ein scriptkiddie ist?
|
|