Privates Datenelement erzeugen



  • Ich mache gerade eine Übungsaufgabe.

    Ich muss in einer Klasse ein privates Datenelement Geburtstag date erzeugen
    weis jemand wie man sowas macht



  • Was hast du schon versucht?



  • 1.1 Implementieren Sie eine Klasse Person mit den privaten Datenelementen name (Typ char-Array der Größe 80)
    und born (Typ: Date). Die Datenelemente sollen durch einen Konstruktor mit folgender Parameterliste initialisiert
    werden:
    Person(const char *pname, int d, int m, int y); // Name, Tag, Monat, Jahr
    Außerdem soll eine befreundete Funktion operator<<() zur Verfügung gestellt werden, mit deren Hilfe die Daten
    einer Person ausgegeben werden.

    Das ist die Aufgabenstellung



  • liouiouio schrieb:

    Das ist die Aufgabenstellung

    Das war nicht die Frage.



  • Ich hab statt Date born 3 private Datentypen (int) genommen



  • zfghf schrieb:

    Ich hab statt Date born 3 private Datentypen (int) genommen

    3*int != Date
    Und es steht halt Date in der Aufgabenstellung.



  • komm net weiter!



  • fhgzf schrieb:

    3*int != Date
    Und es steht halt Date in der Aufgabenstellung.

    Mag sein, aber in C++ gibt es keinen Date-Datentyp. Entweder die Aufgabe enthält noch mehr (z.B. erstellen einer Date-Klasse oder Vorgabe einer bestimmten Bibliothek...) oder da hat jemand die Aufgaben von einer Sprache in eine Andere übertragen und einiges Übersehen (zumal ich char[80] für Strings auch schon daneben finde - irgendwie kennen Dozenten/Lehrer keinen std::string).

    Und der Rest (privates Datenelement erzeugen) ist wiederum so trivial das ich hier nur auf irgendein x-beliebiges Tutorial oder Buch verweise.



  • class Date
    {
    private:
    int day, month, year;

    public:
    Date(int d, int m, int y)
    {
    day = d;
    month = m;
    year = y;
    }
    friend ostream &operator<<(ostream &os, const Date &dt);
    };
    inline ostream &operator<<(ostream &os, const Date &dt)
    {
    return os << dt.day << '.' << dt.month << '.' << dt.year;
    }

    class Person
    {
    char name[80];
    Date *born;
    public:
    Person(const char *pname, int d, int m, int y)
    {
    strcpy(name,pname);
    //Date bo(d,m,y);
    born = new Date(d,m,y);
    }
    friend ostream &operator<<(ostream &os, const Person &dt);
    };

    Hab noch ein wenig was herausgefunden. Ne klasse Date gabs allerdings ohne StandartKonstruktor gehe ich dan richtig in der annahme das ich das ganze dann
    als Date *born definiernen muss weil Date born ja ohne Standk nicht geht oder



  • Lukaslukas schrieb:

    ...

    1. Benutze bitte die C/C++ Tags für die Codeformatierung.

    Lukaslukas schrieb:

    Hab noch ein wenig was herausgefunden. Ne klasse Date gabs allerdings ohne StandartKonstruktor gehe ich dan richtig in der annahme das ich das ganze dann als Date *born definiernen muss weil Date born ja ohne Standk nicht geht oder

    Da liegst du falsch. Dazu gibt es die Initialisierungsliste.

    class Person
    {
        char name[80];
        Date born;
    public:
        Person(const char *pname, int d, int m, int y)
        :   born(d,m,y) // Initialisierungsliste
        {
           // Hier existieren die Elemente bereits, und du machst eine
           // Zuweisung, keine Initialisierung.
           //...
        }
    ...
    

    Dennoch frage ich mich warum auf die C-Bibliothek und C-Strings zurückgegriffen werden soll.

    cu André



  • wieder was gelernt danke

    mit der String klasse gehts auch


Anmelden zum Antworten