Ich schreibe gerade eine Klasse in C++.
Da ich noch fast keine Erfahrung damit habe, probiere ich ein bisschen rum. Der operator+ hat schon ganz gut geklappt. nun habe ich ihn wortwörtlich abgeschrieben, aber im Prototyp und dem Operator das operator+ durch operator+= ersetzt, damit ich später text+=zweiterText schreiben kann.
Leider zeigt der neue Operator keine Wirkung. text=text+„Hallo“; funktioniert zwar, aber text+=„Hallo“; geht nicht.
Hier ist mein Operator +=:
sanstring sanstring::operator+=(const char \*chaine)
{
int tailleTotale = m\_longueur + longeur(chaine);
char \*sommeChaines = new char[tailleTotale + 1];
for (int i = 0 ; i
Wo ist der Wurm drin?
Liebe Grüsse
Kalsan
Was muss ich denn machen, damit der return-Wert übernommen
wird und das Programm funktioniert?
Ne, Ne … Wenn du eine Funktion
int f(int a)
{
return a+1;
}
hast und sie mit
f(5);
aufrufst, so wird der return-Wert verworfen. Daran kann die Funktion nichts ändern Um an den Inhalt von result zu gelangen, könntest Du text2 = (text += „Hallo“); schreiben, aber das ist natürlich nicht besonders elegant und schlechter Programmierstil.
Was Du tun musst ist:
Bei dem Aufruf text +=„Hallo“, wird die Member-Funktion „operator+=“ von der Instanz text aufgerufen, d.h. Du musst in der operator-Funktion das Ergebnis in m_chaine speichern, damit text hinterher den richtigen String enthält.
d.h. text += „Hallo“ bedeuted eigentlich text.operator+=(„Hallo“);