C++ Klasse kopieren

lgorse

Mitglied
Hallo,

ich habe folgende rekursive Funktionen:

PHP:
void f1(myClassType t) {
    // Abbruchbedingung
    ...

    // Hier wird etwas mit t gemacht
    t.par2 = rand();

    // Hier werden die Funktionen wieder aufgerufen
    f1(t);
    f2(t);
}

void f2(myClassType t) {
    // Abbruchbedingung
    ...

    // Hier wird etwas mit t gemacht
    t.par1 = rand();

    // Hier werden die Funktionen wieder aufgerufen
    f1(t);
    f2(t); 
}

Das Problem ist, dass ich an die Funktionen immer eine Kopie des eigentlichen Objekts übergeben will, und keinen Zeiger auf das Objekt. Wie kann ich das umsetzen?

Lg,
lgorse
 
Zuletzt bearbeitet:
Einfach ein kaufmännisches Und-Zeichen vor den Parametern bei der Funktionsdeklaration mitangeben:
C++:
void f1(myClassType &t)
{
  // ...
}
void f2(myClassType &t)
{
  // ...
}
Damit übergibst du die Variable per pass-by-reference und nicht wie standardweise pass-by-value.
 
Das will ich ja gerade nicht tun. Ich will, dass Änderungen in der Funktion nicht auf die Variablen in den übergeordneten Funktionen übertragen werden. Tut mir Leid, wenn ich mich ein bisschen unklar ausgedrückt habe.
 
Dann ist es so eigentlich in Ordnung.

Allerdings solltest du einen passenden Copykonstruktor schreiben.

myClassType(myClassType &x){...}

Der soll die Werte aus x übernehmen, so wie es eben zur Klasse passt.

Wenn du keinen schreibst, wird ezwar ein automatischer erstellt, der aber vor allem bei Pointern nicht immer das macht, was man gerade will...

Gruß
 
Zurück