Zugriff auf Objekte in anderen Klassen.



  • Hallo Zusammen.
    Ich habe offensichtlich einen Fehler mit einer Referenz als Rückgabe und kann den Fehler nicht finden. Ich habe Folgenden Code in meiner Alpha.cpp Hauptdatei:

    #include <iostream>
    #include "Betha.h"
    
    using namespace std;
    
    void Umrechnen(int&);
    
    int main() {
      Betha B;        
      Betha *x_Position; 
      int x = 10;
      x_Position = &B;
    
      B.Setze1(x);
      Umrechnen(x);
    
      cout << B.Nehme1() << "\n";
      cout << B.Nehme2() << "\n";
    
      return 0;
    }
    

    Ich möchte einfach nur die x=10 in Zeile 14 setzten und in Zeile 17 wieder abrufen.

    Dazu habe ich folgende Headerdatei Betha.h

    #include <iostream>                 
    using namespace std;
    
    class Betha {
    
    public:
        int X1;  
        int X2; 
    
        void Umrechnen();
        void Setze1(int x1);
        void Setze2(int x2); 
        int Nehme1() {return X1;}
        int Nehme2() {return X2;}
    
    };
    
    void Betha::Setze1(int x1) {
        X1 = x1;
    };
    
    void Betha::Setze2(int x2) {
        X2 = x2;
    };
    

    Und folgende Betha.cpp Datei:

    #include <iostream>
    #include "Betha.h"
    using namespace std;
    
    void Betha::Umrechnen(int& x){
    
        int a = Betha.Nehme1() + 1;
        Betha.Setze2(a);
        cout <<"In Funktion 'Umrechnen'" << a <<  "\n";
    }
    

    Und zusätzlich möchte ich in Zeile 18 (Alpha.cpp) einfach nur das x+1 (11) abrufen.
    Wenn ich diese void Betha::Umrechen - Funktion mit in Alpha.cpp lege,
    bekomme ich als Ausgabe für x zwar 10, aber für x+1 bekomme ich 32746.
    Wenn ich diese Funktion in Betha.cpp lasse, bekomme ich als Ausgabefehler "Alpha.cpp:(.text+0xca): undefined reference to `Umrechnen(int&)'
    collect2: error: ld returned 1 exit status"

    Meine Frage: liegt das Problem in meiner Betha::Umrechen - Funktion daran, dass ich einmal int& x als Referenz benutze und dann Nehme1() aufrufe? Denn a ist in Zeile 9 in Betha.cpp gleich 1, also Betha.Nehme1() = 0.

    Über einen Tipp würde ich mich freuen.