PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ : Klassen per Referenz Übergeben



DanDanger
02-11-2003, 21:19
Hallo,

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

ich habe eine Klasse "Punkt"


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:


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 :confused: ???

Neugierige Grüsse
DanDanger

wraith
02-11-2003, 22:05
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.


#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 ;
}