Array als Rückgabewert ?



  • Hiho, ich bin ein blutiger Anfänger mit C++ und bin gerade dabei ein bissl die objektorierentierte Programmierung zu erlernen, dabei bin ich auf das Problem gestoßen, dass ich es nciht gebacken grieg ein Array als Rückgabewert einer Funktion zu programmieren, sprich es wird irgendein Müll zurückgegeben!
    Mein code:

    #include <iostream.h>
    #include <stdio.h> 
    
    class Namen
    {
        char Vorname[10];
        char Nachname[10];
        int Ausgabe;
    
    public:
    
        void SetzeVorname(void);
        void SetzeNachname(void);
    
        char ZeigeVorname(void);
        char ZeigeNachname(void);
    };
    
    void Namen::SetzeVorname()
    {
    cout << "Bitte geben sie einen Vornamen ein:" << "\n";
    cin >> Vorname;
    }
    
    void Namen::SetzeNachname()
    {
    cout << "Bitte geben sie einen Nachnamen ein:" << "\n";
    cin >> Nachname;
    }
    
    char Namen::ZeigeVorname()
    {
    printf ("Vorname: %s \n",Vorname);
    return (Vorname[10]);
    }
    
    char Namen::ZeigeNachname()
    {
    return (Nachname[10]);
    }
    
    main(void)
    {
    
    char Text[10];
    
    Namen Erstens;
    
    Erstens.SetzeVorname();
                    //Erstens.SetzeNachname();
    Text[10] = Erstens.ZeigeVorname();
                    //cout << "Nachname: " << Erstens.ZeigeNachname() << endl;
    cout << "Rueckgabe: " << Text << endl;
    
    getchar();
    return 0;
    }
    

    Aber das müsste doch eigentl. ganz einfach gehen, denn Text (bzw. Zeichenketten - charArrays) werden doch sehr häufig zu Rückgabewerten von Funktionien benutzt, oder?

    THX



  • Mit einem array geht das nicht so wie du das gern hättest.
    Verwende einen vector statt eines arrays und schon gehts. 😉



  • Oder du lieferst einen Zeiger auf das erste Array-Element zurück, was ja gerade der Array-Name ist.
    Lies dir auch mal den Pointer-Artikel im Magazin-Teil durch!



  • Danke!

    Ich hab leider keine Ahnung, was Vector ist, also scheidet dies Lösung aus!

    Aber das mit dem Zeiger kann ich mal probieren, ich weiß zwar noch nciht, wie ich mit der zurückgegebenen Anfanfsadresse weiterarbeiten kann, aber das wird sicher noch, Danke!





  • Falls sich deine Frage nur auf deine beiden Elementfunktionen "ZeigeVorname" und "ZeigeNachname" bezieht...

    Dort brauchst du keine Rückgabe, wenn es nur darum geht, den entsprechenden Namen anzuzeigen/auszugeben:

    void Namen::ZeigeNachname()
    {
    cout << Nachname;
    }
    

    würde völlig ausreichen...



  • @ Nanug, joah, das ist kein Problem, das versteh ich!

    @ predator Danke für den Hinweiß, ich werd mal gucken, wenn ich Zeit finde mir das durchzulesen! THX auch dir

    DAs Thema hat sich erledigt, thx!


Anmelden zum Antworten