Methodenaufruf funktioniert nicht



  • Hallo,
    bisher habe ich mit der ausgabe von std::to_to_string gearbeitet. Da hat es ganz gut funktioniert. Jetzt arbeite ich aber zum ersten Mal nur mit int Werten, die auch berechnet werden. Leider wird mir das Objekt beim Aufrufen der Methode als falsch angezeigt ( "Der Ausdruck muss einen Klassentyp aufweisen") Ich weiß nicht genau, was das zu bedeuten hat. Vielleicht könnt ihr mir da helfen

    Header Datei

     #pragma once
     #include <iostream>
     using namespace std;
    
     class Date {
     private:
     int &day, &month, &year;
    
     public:
    Date(int d, int m, int y) : day(d), month(m), year(y) {};
    void add_day();
     };
    

    Die CPP

     #include "Date.h"
     void Date::add_day() {
    day++;
    month += (day - 1) / 31;
    day = (day - 1) % 31 + 1;
    year += (month - 1) / 12;
    month = (month - 1) % 12 + 1;
    
    cout << day << "." << month << "." << year;
    }
    

    Main:

      #include "Date.h";
    int main() {
    
    int day;
    int month;
    int year;
    int date;
    
    cout << "Tag: ";
    cin >> day;
    cout << "Monat";
    cin >> month;
    cout << "Jahr: ";
    cin >> year;
    
    Date date = { day, month, year };
    
    date.add_day(); // Fehlermeldung "Muss Klassentyp aufweisen"
    
    
    
    system("PAUSE");
    return 0;
    

    }



  • @mmm_1482_ sagte in Methodenaufruf funktioniert nicht:

    Hallo,

    int date;
    Date date =



  • @Jockelx
    stimmt ich dussel...
    das klappt zwar, aber die ausgabe ist zum einen falsch und ich bekomme nach ausführung die Meldung "Zugriffsverletzung" Ich habe getter und setter zur sicherheit nochmal definiert, aber das hat das Problem nicht gelöst. Hat da noch jemand einen Tipp?



  • Noch eine Anmerkung: Die Klasse Date sollte keine Referenzen speichern. Oder ist das eine Vorgabe? Das kann ich mir allerdings kaum vorstellen.



  • @yahendrik Nein das habe ich gemacht. Der gedanke dahinter war, dass bei mehreren Eingaben bzw wenn man noch einen Tag addieren möchte, der Wert beibehalten wird. Aber falls das falsch ist entferne ich das



  • @yahendrik ah perfekt jetzt, da die Referenzierung weg ist, tut das Programm, was es soll 🐕 Vielen dank



  • Noch ein Hinweis: deine Klasse arbeitet nicht richtig (nicht jeder Monat hat 31 Tage). Rechnen mit Datum ist nicht leicht. Nimm einfach eine fertige Klasse wie die date::year_month_day hier: https://howardhinnant.github.io/date/date.html

    Dann kannst du sowas machen:

    #include <date.h>
    using namespace date;
    
    (...)
    auto myDate = year(2019) / 12 / 31;
    auto nextDate = sys_days(myDate) + days(1);
    std::cout << nextDate << '\n';
    // gibt 2020-01-01 aus
    


  • @mmm_1482_ sagte in Methodenaufruf funktioniert nicht:

    Hallo,
    bisher habe ich mit der ausgabe von std::to_to_string gearbeitet.

    "I bless the rains down in Africa"


Log in to reply