|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
wendy Mini JLI'ler
Anmeldedatum: 03.10.2002 Beiträge: 8 Wohnort: Sumpf Medaillen: Keine
|
Verfasst am: 15.01.2003, 18:26 Titel: Konstruktoren von Basis und abgeleiteten Klassen |
|
|
Hallo,
ich habe folgendes Problem, in einem Programm will ich eine Klasse "File" erzeugen, davon abgeleitet eine Klasse zum einlesen ("InputFile") und eine zum schreiben ("OutputFile"). Von "InputFile" und "OutputFile" sind jeweils wieder eine Klasse mit Zusatzfunktionen abgeleitet ("InputFileExt" und "OutputFileExt").
also zB:
"File" -> "InputFile" -> "InputFileExt"
Im Konstruktor von "File" nutze ich den Befehl:
File::File(char *FileName, char Modus)
{
inout = fopen (FileName, "Modus");
(...)
}
wobei "inout" der FILE-Pointer sein soll, "FileName" sei zB: "blabla.dat" und "Modus" zB "w", diesen soll aber die abgeleitete Klasse festlegen also "InputFile" (bzw deren abgeleitete Klasse zB "InputFileExt"). So dass der Aufruf von File eben :
File testklasse (blablaname, w);
...der von InputFile :
InputFile testklasse (blablaname);
...und der von InputFileExt :
InputFileExt testklasse (blablaname);
sein soll, "inout" wäre hier zB als:
protected: FILE *inout;
in "File" (=Basis) definiert .
Fragen:
1.Is das möglich?
2.Is das möglich mit quasi unterschiedlichen Konstruktoren (Basis und abgeleitete Kl.) in den Basisklassenkonstruktor Parameter zu übergeben bei Erzeugung eines Objekts einer abgeleiteten Klasse (s.o.)?
3.Wie implementiere ich dann die Konstruktoren in den Klassen?
4.Wie die Destruktoren (wegen fclose() )?
5.Gibts da ne Möglichkeit mit virtual zu arbeiten?
Danke schon mal... _________________ Mit Vanessa versteht sich Wendy dagegen weniger gut. Vanessa träumt von einer Karriere als Fotomodell. Einkaufen gehen und Jungen sind ihr wichtiger als ihr Pferd Tarik, ein Araber Schimmelwallach. |
|
Nach oben |
|
|
Ciceri Super JLI'ler
Alter: 37 Anmeldedatum: 26.08.2002 Beiträge: 418 Wohnort: Wischhafen/in der nähe Hamburgs Medaillen: Keine
|
Verfasst am: 15.01.2003, 19:27 Titel: |
|
|
JLI kaufen-lesen
also, ich glaube du machs das ein bisschen umständlich, hast du jli? also christains buch? nach den ersten zeilen habe ich nicht mehr weiter gelesen, also weiß ich net, ob das möglich ist nicht böse sein _________________ www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
|
Ciceri Super JLI'ler
Alter: 37 Anmeldedatum: 26.08.2002 Beiträge: 418 Wohnort: Wischhafen/in der nähe Hamburgs Medaillen: Keine
|
Verfasst am: 15.01.2003, 20:13 Titel: |
|
|
hehe, dekonstruktor ist doch einfach _________________ www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 15.01.2003, 20:44 Titel: |
|
|
Ciceri hat Folgendes geschrieben: | hehe, dekonstruktor ist doch einfach |
Solche Kommentare kannst du dir sparen. Wenn du schon sowas postest kannst du auch wenigstens gleich die Lösung mitposten wenn es so einfach ist.
@Wendy:
Der Dekonstruktor ist ein Klassen-Member, der den Namen der Klasse mit einer vorangestellten Tilde(~) hat:
Code: |
class CBlubb
{
CBlubb() { } // Konstruktor
~CBlubb() // Dekonstruktor
{
fclose(..);
}
...
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
wendy Mini JLI'ler
Anmeldedatum: 03.10.2002 Beiträge: 8 Wohnort: Sumpf Medaillen: Keine
|
Verfasst am: 16.01.2003, 04:32 Titel: OK, Dank! |
|
|
hi, naja also da ich nich von Geburt aus C++ gelernt hab bin ich da quasi ja jemand der das als Frendsprache erst lernen muss, danke für die freundlichen Hinweise, das ich C++ erst lernen muss - bin grad dabei, aber man wird ja wohl noch Fragen haben dürfen oder war die Frage sooo dumm???
Mittlerweile hab ich das rausbekommen,
wenn
class InputFile:public File
{...}
ist und der Konstruktor von File zB
File::File(char *Filename, char mode)
{...}
ist, der von InputFile aber zB
InputFile::InputFile(char *Filename)
{...}
dann kann ich beim Konstruktor von InputFile schreiben:
InputFile::InputFile(char *Filename):File(FileName, "r")
{...}
womit implizit auch der Konstruktor der Basisklasse gesetzt wird, Danke ich weiss mittlerweile auch sogar schon was ein Destruktor ist... Aber das hatte ich ja doch gar nicht gefragt, oder? Ich geb aber zu dass die Frage trotzdem dämlich war - ok, es gibt bestimmt schwierigeres in C++.
Umstandlich ist dass denke ich nicht wenn man mit nem Filepointer Textfiles einlesen will, und eine Basisklasse zum erstellen des Pointers schreibt und davon eine Klasse zum Speichern und eine zum Laden schreibt (mit anderen Funktionen die da noch jeweils dazukommen), sondern eher so die normale Anwendung von Vererbung oder???
danke trotzdem... _________________ Mit Vanessa versteht sich Wendy dagegen weniger gut. Vanessa träumt von einer Karriere als Fotomodell. Einkaufen gehen und Jungen sind ihr wichtiger als ihr Pferd Tarik, ein Araber Schimmelwallach. |
|
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
|