 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 09.07.2006, 11:13 Titel: Abgeleitete Methode ruft Basismethode auf |
|
|
CPP: | class C1
{
void BFunction();
virtaul void Function();
}
class C2 : public C1
{
void Function()
{
BFunction();
...
}
} |
Also, so etws brauch ich für so manches, zum Beispiel fürs Laden oder Speichern in Dateien. Ich will ja nicht, wenn ich ei ne Variable der Basisklasse ändere, alle Funktionnen der abgeleiteten Klassen ändern müssen. Nr irgendwie scheint mir das ein wenig unschön, Konstruktoren werden ja z.B. auch hintereinader aufgerufen, ohne das es "zwei" Funktionen gibt.
Im Prinzip will ich halt nur, das eine abgeleitete Funktion vor allen anderem erst die 'Funktion der Basisklasse aufruft.
Hat jemand ne bessere Idee? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.07.2006, 12:00 Titel: |
|
|
Genau so, wie du es machst und nicht anders.
Das hat folgenden Grund: - so kannst du bestimmen, wann die Basisfunktion aufgerufen wird - und ob überhaupt.
Bei Konstruktoren ist es von forne herein klar, wann sie aufgerufen werden müssen - bei Funktionen legst du es selber fest - wo, wann und ob überhaupt... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 09.07.2006, 12:08 Titel: |
|
|
ganz einfach
CPP: | void AbgeleiteteKlasse::funktion()
{
BasisKlasse::funktion();
// hier dann das andere
}
|
_________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 09.07.2006, 13:00 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | von forne herein |
Köstlich... xD ;)
@Jona
Ist etwas komisch formuliert was du genau möchtest, möchtest du eine Methode in der Basisklasse, welche von mehreren verschiedenen Methoden der abgeleiteten Klasse vor der eigentlichen Ausführung aufgerufen wird (deshalb die unterschiedlichen Namen der Methoden), oder möchtest du eine Methode, welche in der abgeleiteten Klasse nicht überschrieben, sondern "erweitert" wird? Wenn ja, kannst du dir das 'virtual' sparen, musst die Methoden dann aber immer explizit als Methode der Basis- bzw. abgeleiteten Klasse ausweisen über den Scope, und in der Methode der abgeleiteten Klasse die Methode der Basisklasse so aufrufen, wie Dragon das schon demonstriert hat.
Vielleicht nutzt dir auch das hier noch etwas:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Overload#Answ |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 09.07.2006, 13:04 Titel: Re: Abgeleitete Methode ruft Basismethode auf |
|
|
Also so?:
CPP: | class C1
{
void Function()
{
bla;
}
}
class C2 : public C1
{
void Function()
{
C1::Function();
...
}
} |
_________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 09.07.2006, 13:05 Titel: |
|
|
Jupp, wenn es das ist, was du willst. :P |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 10.07.2006, 07:26 Titel: |
|
|
GreveN hat Folgendes geschrieben: | AFE-GmdG hat Folgendes geschrieben: | von forne herein |
Köstlich... xD
|
Yup - vorne ^^
Ok, ich hab mich ein wenig vertan - (verlesen)
Natürlich meinte ich, dass die Basisfunktion der abgeleiteten Funktion mit Basisklasse::Funktionsname aufgerufen werden kann
Sonst wäre vererbung ja sinnlos  _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
David Super JLI'ler
Alter: 40 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 10.07.2006, 10:26 Titel: Re: Abgeleitete Methode ruft Basismethode auf |
|
|
Jonathan_Klein hat Folgendes geschrieben: | Also so?:
CPP: | class C1
{
void Function()
{
bla;
}
}
class C2 : public C1
{
void Function()
{
C1::Function();
...
}
} |
|
virtual nicht vergessen. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|