frage zu struct tm
-
hallo,
in meinem untenstehenden code ich ein pointer auf ein struct tm array:
struct tm *timeinfo;frage: wie müsste ich den code nun umschreiben, wenn ich keinen pointer will..
also:
struct tm timeinfo;oder geht das garnicht?
#ifndef gztime #define gztime #include <iostream> #include <ctime> #include <string> /**************************************************** name: time.h type: c++ class autor: gz version: 0.2 ****************************************************/ using namespace std; class gtime { public: // konstruktoren [3 möglichkeiten eine zeit festzulegen: localtime, stamp, explizit] gtime(); gtime(int stamp); gtime(int second, int minute, int hour, int day, int month, int year); // display funktion readonly void display() const; // set funktionen inline int setSec(int second) { timeinfo->tm_sec = second; mktime(timeinfo); } int setMin(int minute) { timeinfo->tm_min = minute; mktime(timeinfo); } int setHour(int hour) { timeinfo->tm_hour = hour; mktime(timeinfo); } int setDay(int day) { timeinfo->tm_mday = day; mktime(timeinfo); } int setMonth(int month) { timeinfo->tm_mon = month; mktime(timeinfo); } int setYear(int year) { timeinfo->tm_year = year; mktime(timeinfo); } // datum mit stamp einstellen int setStamp(int stamp); private: struct tm *timeinfo; time_t timestamp; }; // konstruktoren gtime::gtime() { // timeinfo wird mit localtime erzeugt time(×tamp); timeinfo = localtime(×tamp); mktime(timeinfo); } gtime::gtime(int second, int minute, int hour, int day, int month, int year) { // timeinfo wird mit übergebenen werten erzeugt timeinfo->tm_sec = second; timeinfo->tm_min = minute; timeinfo->tm_hour = hour; timeinfo->tm_mday = day; timeinfo->tm_mon = month; timeinfo->tm_year = year; time_t timestamp = mktime(timeinfo); } #endif
-
Hallo,
natuerlich geht das. Du greifst dann nicht mehr mit dem ->-Operator auf die
Elemente, sondern mit dem .-Operator. Ausserdem darfst du nicht vergessen,
dass du bei vielen Funktionen die Adresse uebergeben musst, du musst also
daher vom Adressoperator gebrauch machen.mfg
v R
-
vielen dank für die tipps.. nun weiss ich warum ich immer soviele fehlermeldungen bekam
werde das nun mal ändern..
-
hi, da ich nochmal poste, hat es nochnicht ganz geklappt.. das mit dem .-operator, funktioniert jedenfalls. ich habe schon ne menge errors weg.
allerdings sind noch folgende 2 probleme geblieben:
In file included from datum.cpp:2:
time0.2.h: In constructorgtime::gtime()': time0.2.h:49: no match for
tm& = tm*' operator
/usr/include/time.h:132: candidates are: tm& tm::operator=(const tm&)
time0.2.h: In constructorgtime::gtime(int, int, int, int, int, int)': time0.2.h:62: no match for
* tm&' operatordie relevanten zeilen:
// variablen deklarationen:
struct tm timeinfo;
time_t timestamp;// zeile 49:
timeinfo = localtime(×tamp);// zeile 62:
×tamp = mktime(&timeinfo);ich vermute ich habe irgendwelche fehler mit adress-operatoren gemacht ..
ich blick da bei der ganzen pointer / referenzen thematik noch nicht ganz richtig durch.. ich verstehe zwar, was es ist, und was sie für vorteile bieten, allerdings nicht wie ich sie nun selber anwenden muss..
wäre nett wenn mir einer erklären könnte, wie ich die zeilen 49 und 62 umschreiben muss, und vorallem warum man sie so umschreiben muss!?
-
Aus der Visual C++ 6.0 Hilfe
Deine struct tm timeinfo; nmuss *struct tm timeinfo; heissen
struct tm *newtime; time_t long_time; newtime = localtime( &long_time ); /* Convert to local time. */
Und dein ×tamp istr falsch
Aus der Visual C++ 6.0 Hilfe
struct tm when; time_t now, result; time( &now ); when = *localtime( &now ); result = mktime( &when )
-
Deine struct tm timeinfo; nmuss struct tm *timeinfo; heissen
hmm wieso? der * heisst doch nur dass da ein zeiger auf timeinfo gemacht wird, wenn ich das richtig verstehe... den kann man doch auch weglassen.. das behaupte ja nicht nur ich sondern virtuell Realisticer, in seinem beitrag weiter oben auch?!
-
Achte doch bitte auf die Rückgabewerte von Funktionen.
Die Funktion trägt in einen Pointer die Adresse der Lösung ein, also mußt du ihr einen Pointer geben.
-
thx! die zwei sätze von dir braucht ich noch
jetzt hat's geklapt, und ich glaube ich verstehe das ganze pointer zeugs schon wieder ein bisschen besser..