JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=5e10868aaf9d37fa7db738762b5fff75Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Abgeleitete Methode ruft Basismethode auf

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 09.07.2006, 11:13    Titel: Abgeleitete Methode ruft Basismethode auf Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.07.2006, 12:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 09.07.2006, 12:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 09.07.2006, 13:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 09.07.2006, 13:04    Titel: Re: Abgeleitete Methode ruft Basismethode auf Antworten mit Zitat

Also so?:

CPP:
class C1
{
 void Function()
  {
  bla;
  }
}

class C2 : public C1
{
 void Function()
 {
   C1::Function();
   ...
  }
}

_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 09.07.2006, 13:05    Titel: Antworten mit Zitat

Jupp, wenn es das ist, was du willst. :P
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 10.07.2006, 07:26    Titel: Antworten mit Zitat

GreveN hat Folgendes geschrieben:
AFE-GmdG hat Folgendes geschrieben:
von forne herein

Köstlich... xD Wink

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 Twisted Evil
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 40
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 10.07.2006, 10:26    Titel: Re: Abgeleitete Methode ruft Basismethode auf Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum