000
07.12.2004, 10:25 Uhr
~Peter82
Gast
|
Hallo ich hab folgende Datums-Klasse und Quellcodedatei die ich weiter in meinem Programm nutze. Nun will ich das Datum mit den anderen Daten des Programms in eine Dateien schreiben und wieder auslesen. Aber die Methode ostream* write( ostream& os) const; Funktioniert nicht :-( . Kann ich das vielleicht noch besser lösen ich vor der Stelle: " ostream* write( ostream& os) const;" bekomm immer den Fehler: Fehlendes ';' vor * . ??
C++: |
#include "Datum.h"
#include<iostream> #include<ctime> #include<fstream>
// Bindet den Standard Namensbereich ein using namespace std;
// Datum mit heutigem Datum initialisieren void Datum::init(void) { struct tm *zeit; time_t sec;
time(&sec); zeit = localtime(&sec);
tag = (short) zeit->tm_mday; monat = (short) zeit->tm_mon + 1; jahr = (short) zeit->tm_year + 1900; }
// datum mit übergebenen Werten initialisieren--> void Datum::init(int t, int m, int j) { tag = (short) t; monat = (short) m; jahr = (short) j; }
//Datum ausgeben void Datum::print(void) { cout <<tag<<"."<<monat<<"."<<jahr<<endl;
}
// Wenn es ein Schaltjahr ist bool Datum::isLeapYear(int j){ return(jahr % 4 == 0 && jahr % 100 != 0) || jahr % 400 == 0; // wahr zurückgeben, wenn Bedingungen erfüllt }
// Datum setzen bool Datum::setDatum(short tg, short mn, short j){ if (tg < 1 || tg > 31) return false; // ungültiger Tag if (mn < 1 || mn > 12) return false; // ungültiger Monat
switch(mn){ // "Case Monat of" case 2: if(isLeapYear(j)){ // Wenn Schaltjahr und Februar ist if (tg > 29) // Darf Tag nicht größert als 29 sein return false; // sonst gib falsch zurück } else if (tg > 28) // sonst darf Tag n icht größer 28 sein return false; // sonst gib falsch zurück break; // verlasse die Anweisung case 4: // April, case 6: // Juni case 9: // September case 11: // November if(tg > 30) return false; // Tag darf nicht größer 30 sein } tag = tg; // Tag, monat = mn; // Monat, jahr = j; // Jahr intialisieren return true; // wahr zurück }
}*/
ostream& Datum::write(ostream& os) { os.write((char*)&tag, sizeof(tag) ); os.write((char*)&monat, sizeof(monat) ); os.write((char*)&jahr, sizeof(jahr) ); return os; }
|
C++: |
#ifndef _DATUM_ // Verhindert mehrfaches Inkludieren der Klasse #define _DATUM_
#include <fstream>
class Datum // Definition der Datum Klasse { private: short tag, monat, jahr; // Tag, Monat, Jahr
public:
Datum( short tg = 1, // Konstruktor short mn = 1, short j = 1900):tag(tg), monat(mn), jahr(j){} void init(void); // Standard Initialisierung (heutiges Datum) void init(int tag, int monat, int jahr); // Initialisierung void print(void); // Ausgabe bool setDatum(short tg, short mn, short j); // Prüft Format und legt das Datum fest bool isLeapYear(int jahr); // Prüft auf Schaltjahr short getday(){return tag;} // Liefert tag short getmonth(){return monat;} // Liefert monat short getyear(){return jahr;} // Liefert monat // void dspeichern(char* datei); // istream& read( istream& is); ostream* write( ostream& os) const; };
#endif // Ende der Klassendefinition von Datum
|
|