Objekt per Referenz übergeben funktioniert nicht. - GELÖST -



  • Ich möchte gerne der Funktion "Dateneingabe" das Objekt "Datensatz" per Referenz übergeben.
    Leider wird der Code nicht kompiliert, Fehlerausgabe ist: " Datensatz was not declared in this scope".
    Kann mir jemand auf die Sprünge helfen, wo der Fehler liegt?

    void Dateneingabe(Datenbank& Person)
    {
     cout<<"Name: ";
     cin>>Person.Name;
    }
    
    void Auswahl()
    {
     char x;
     cin>>x;
     switch (x)
     {
      case '1': Dateneingabe(Datensatz); 
      break;
     }
    
    int main()
    {
     Datenbank Datensatz;              //Datenbank ist Name der Klasse.
     Auswahl();
     return 0;
    }
    


  • Der Fehler ist, was er sagt.
    Du hast Datensatz in main deklariert(), nicht in Auswahl().



  • Athar schrieb:

    Der Fehler ist, was er sagt.
    Du hast Datensatz in main deklariert(), nicht in Auswahl().

    Ok.
    Seltsamerweise gibt der Compiler diese Fehlermeldung nicht aus, wenn anstelle eines Objektes eine Variable (z.B. ein Int-Wert, ebenfalls deklariert in der main()) übergeben wird.



  • Nein, ob die Variable vom Typ Datenbank oder int ist, tut nichts zur Sache.
    Das hat andere Gründe, dazu müsstest du aber den Code herzeigen.



  • Wenn du das so schreiben willst, dann musst du Datensatz an Auswahl() und von dort aus an Dateneingabe() übergeben. Besser: Memberfunktionen.

    außerdem: dein Compiler soll das mit sich machen lassen..?

    void Auswahl()
    {
     char x;
     cin x;
     switch (x)
     {
      case '1': Dateneingabe(Datensatz);
      break;
     }
    


  • [Rewind] schrieb:

    Wenn du das so schreiben willst, dann musst du Datensatz an Auswahl() und von dort aus an Dateneingabe() übergeben. Besser: Memberfunktionen.

    Habe ich mal probiert, funktioniert 🙂

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Datenbank
    {
        public:
        string getName();
        void setName();
        void Auswahl();
    
        private:
        string Name;
    };
    
    string Datenbank::getName()
    {
        return Name;
    }
    
    void Datenbank::setName()
    {
        cout<<"Name: ";
        string Eingabe;
        cin>>Eingabe;
        Name=Eingabe;
    }
    
    void Datenbank::Auswahl()
    {
     char x;
     cin>>x;
     switch (x)
     {
      case '1': setName();
      break;
     }
    }
    
    int main()
    {
        Datenbank Datensatz;
        Datensatz.Auswahl();
        return 0;
    }
    

Anmelden zum Antworten