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 Datum
    

    nun 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 Datum
    

    Ist 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 ähnlich

    class 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.


Anmelden zum Antworten