void-Funktion "drucken" innerhalb einer Klasse



  • Hallo!

    Ich habe eine Klasse "Datum", die aus dem Hauptprogramm Tag, Monat und Datum bekommt und daraus private Variablen macht.
    Ein Teil der Aufgabe besagt: "Ergänzen Sie eine Member-Funktion "drucken", die das gespeicherte Datum ausgibt (z.B. 1.1.1970)"

    Mein Ansatz steht als Member-Funktion innerhalb der Klasse und sieht wie folgt aus:

    void drucken()
    {
    	cout<<m_tag <<"." <<m_monat <<"." <<m_jahr <<endl;
    	return;
    }
    

    Allerdings wird diese Funktion scheinbar nicht aufgerufen, mir ist auch nicht ganz klar, wie dies geschehen sollte. Muss ein Befehl im Hauptprogramm ergänzt werden und wenn ja welcher?



  • Du hast die Methode nur definiert, d.h. die Klasse weiss, wie zu "drucken" ist. D.h. aber noch lange nicht, dass sie es selbstaendig tut. Du musst ihr das im Laufe des Programms noch explizit sagen.



  • man ruft eine Funktion folgendermaßen auf:

    void deineFunktion()
    {
    //hier deine Befehle
    //wenn deine funktion etwas anderes als void ist, dann return x, wobei x für 
    //irgendeinen wert steht
    }
    
    int main()
    {
    //deine Befehle
    deineFunktion();
    //deine Befehle
    return 0;
    }
    

    du kannst auch werte einer funktion übergeben:

    void deineFunktion(int x, int y)
    {
    //hier deine Befehle wie:
    cout<<x<<' '<<y<<endl;
    //wenn deine funktion etwas anderes als void ist, dann return x, wobei x für
    //irgendeinen wert steht
    }
    
    int main()
    {
    //deine Befehle
    deineFunktion(4, 3);
    //deine Befehle
    return 0;
    }
    


  • knivil schrieb:

    Du hast die Methode nur definiert, d.h. die Klasse weiss, wie zu "drucken" ist. D.h. aber noch lange nicht, dass sie es selbstaendig tut. Du musst ihr das im Laufe des Programms noch explizit sagen.

    Grundsätzlich verstehe ich den Funktionsaufruf mit und ohne Argumente usw.

    Mir ist aber scheinbar die Syntax für den Aufruf nicht klar, für den Fall dass die Funktion zu einer Klasse gehört.

    Eigentlich würde ich es im Hauptprogramm so machen:

    cout <<meinDatum.drucken();
    

    Allerdings beinhaltet die Funktion selber ja schon das "cout".



  • in deinem beispiel gibst du den rückgabewert von der funktion über cout aus. um die funktion aufzurufen genügt einfach

    deineKlasse.deineFunktion();
    


  • Clundsch schrieb:

    in deinem beispiel gibst du den rückgabewert von der funktion über cout aus. um die funktion aufzurufen genügt einfach

    deineKlasse.deineFunktion();
    
    cout << meinDatum.drucken();
    

    führt zu

    error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'void' akzeptiert (oder keine geeignete Konvertierung möglich)



  • das liegt daran, dass du den rückgabewert von einer void-funktion ausgeben willst.
    da aber eine void-funktion keinen hat, gibts nen error. lass einfach mal das cout weg und versuchs nochmal.



  • Außerdem musst Du aus der Funktion eine Memberfunktion Deiner Klasse machen.



  • Clundsch schrieb:

    das liegt daran, dass du den rückgabewert von einer void-funktion ausgeben willst.
    da aber eine void-funktion keinen hat, gibts nen error. lass einfach mal das cout weg und versuchs nochmal.

    Danke, das war's!

    (Wäre ganz gut gewesen, wenn mein Dozent mir das irgendwann mal mitgeteilt hätte, dass ich eine Funktion in der Art aufrufen muss, aber was will man erwarten für 365,- € im Semester ...)

    @Belli: Die Funktion stand ja schon in der Klasse.


Anmelden zum Antworten