Anzeige:
Ergebnis 1 bis 2 von 2

Thema: C++ : Klassen per Referenz Übergeben

  1. #1
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130

    C++ : Klassen per Referenz Übergeben

    Hallo,

    ich hab' mal ne' kleine Frage zu Zeigern und Referenzen (das leidige Thema)....

    ich habe eine Klasse "Punkt"
    Code:
    class Punkt
    {
    public :
      int x, y ;
      (.......)
    }
    Nun habe ich eine Funktion, der ich per Referenz 1 Punkt-Objekt Übergebe.
    Ich möchte halt, das die x,y Werte des Objekts in der Funktion geändert werden:
    Code:
    void foo(Punkt *EinPunkt)
    {
     EinPunkt->x += 10 ;
     EinPunkt->y += 20 ;
    }
    
    void main()
    {
      Punkt aPoint(50, 50) ; // initialisiert den Punkt mit den x/y Werten (50, 50)
    
      foo(&aPoint) ;
    
       cout << aPoint.x << ", " << aPoint.y << endl ;
    }
    Als Ausgabe erhalte ich aber trotzdem nur : 50, 50
    die Punk-Objekt-Werte wurden also nicht geändert.

    Meine Frage : Was mache ich falsch, schliesslich ändere ich doch die Werte der Objekte,
    auf der die Zeiger Zeigen, oder nicht ???

    Neugierige Grüsse
    DanDanger
    Geändert von DanDanger (02-11-2003 um 22:23 Uhr)
    ------------------------------------
    DanDanger

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486
    Also wenn ich mir zur Klasse Punkt noch den entsprechenden Konstruktor hinzudenke (+ includen von iostream,und int main),dann tut das Programm das was du denkst.Es wird 60,70 ausgegeben.

    Und nochmal als komplettes Bsp + Referenz.
    Code:
    #include <iostream>
    
    using namespace std;
    
    class Punkt
    {
    public :
      int x, y ;
      Punkt(int a,int b) : x(a),y(b) {}
    };
    
    void foo(Punkt *EinPunkt)
    {
     EinPunkt->x += 10 ;
     EinPunkt->y += 20 ;
    }
    
    void foo(Punkt &EinPunkt)
    {
     EinPunkt.x += 10;
     EinPunkt.y += 20;
    }
    
    int main()
    {
      Punkt aPoint(50, 50) ;
    
      foo(&aPoint) ;
    
      cout << aPoint.x << ", " << aPoint.y << endl ;
    
      foo(aPoint);
    
      cout << aPoint.x << ", " << aPoint.y << endl ;
    }

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •