Typecasts und Überladung
-
Hallihallo an alle,
Ich schreibe momentan eine einfache Dateklasse für eine Belegarbeit und habe folgende Funktion, die eine bestimmte Anzahl an Tagen zu einem Datum addiert:
cdate& operator+=(int);diese nutze ich dementsprechend wie folgt:
cdate_obj += 4; //addiert 4 Tage zu dem Datumnun möchte ich auch gern Monate und Jahre addieren und würde die Funktion dabei gern so aufrufen:
cdate_obj += (month) 4; // addiert 4 Monate zum DatumIst dies möglich und wenn ja, könnte mir jemand einen kurzen Hinweis zur Umsetzung geben?
Vielen Dank schon mal
-
du kannst für Tage/Monate/Jahre eine Klasse erstellen und deinen operator überladen. 3x für int wird nicht gehen.
oder du erstellst dir einfach eine hilfsklasse.
zB so oder ähnlichclass Hilfsklasse { public: Hilfsklasse(int days, int months, int years); } cdate& operator+=(const Hilfsklasse&); ... cdate_obj += Hilfsklasse(4, 6, 2); // 4Tage, 6Monate, 2 Jahre
-
Oder einfach
struct cdate { static cdate days(int n); }; cdate &operator += (cdate &, const cdata &); cdate d; d += cdate::days(4);
-
Und warum nicht einfache Methoden?
class date { public: void add_days(int d); void add_months(int m); void add_years(int y); };operator+/+= macht trotzdem Sinn.