000
07.03.2007, 16:13 Uhr
ProgramPaula
|
Hallo liebe C++ Freaks, Ich habe eine Frage zu dem Beispiel aus dem Buch C++ in 21 Tagen , Kapitel 12 Seite 23 (Listing 12.12) Hier der Internetlink zum Beispiel: http://web.dadanini.com:7980/books/C++%20in%2021%20Tagen/kap12.html#72120
Meine Frage zu dem Beispiel: in der main findet der Aufruf s1 += tempTwo statt. tempTwo ist ein CharArray.
Das ganze Thema spielt sich in der Klasse String ab, die u.a den überladenen =+Operator deklariert. class String 8: { 9: public: 10: // Konstruktoren 11: String(); 12: void operator+=(const String& . . . }
Die Definition des überladenen += Operator sieht wie folgt aus: 131: void String::operator+=(const String& rhs) 132: { 133: unsigned short rhsLen = rhs.GetLen(); 134: unsigned short totalLen = itsLen + rhsLen; 135: String temp(totalLen); 136: unsigned short i; 137: for (i = 0; i<itsLen; i++) 138: temp[i] = itsString[i]; 139: for (unsigned short j = 0; j<rhs.GetLen(); j++, i++) 140: temp[i] = rhs[i-itsLen]; 141: temp[totalLen]='\0'; 142: *this = temp; 143: } 144:
Es wird also eine Referenz auf die Klasse String (die weiter vorne definiert wurde, also eine eigene Klasse) erwartet (Zeile 131). tempTwo ist aber ein CharArray. Wie soll nun der Aufruf s1 += tempTwo; (siehe unten) funktionieren? Man kann ein CharArray doch nicht einer Referenz auf eine Klasse zuweisen??!!
int main() {
char tempTwo[20] strcpy(tempTwo,"; schoen hier zu sein!"); s1 += tempTwo; . . . .
|