2016-04-09 7 views
-1
void Str::operator=(char* a) 
    { 
     delete[] str; 

     len = strlen(a); 
     str = new char[len + 1]; 
     strcpy (str, a); 

} 

void Str::operator=(class Str a) 
{ 
    delete[] str; 

    len = strlen(a.str); 
    str = new char[len + 1]; 
    strcpy(str, a.str); 


} 

Dies ist eine Art der Klasse Str. I definiert 'operator = (char * a) in der Klasse Str', und ich zum ersten Mal ein in 'main.cpp' wie folgt verwenden können:Wie kann ich Klassenfaktor in Funktion verwenden?

Str a("Icecream"); 
a = "Cake\n"; 

Und gut laufen.

Aber wie kann ich 'operator = (Klasse Str a)' verwenden?

ich so versucht:

Str c("Hamburger")l 

c = a; 

Ich erwartete c Information eines hat. i, e, c ist keine Hamburgerinformation mehr. c ist Kuchen.

Aber wenn ich diesen Code kompiliere, hat c Informationen von einem aber Anruffehler.

Wie kann ich 'operator = (Klasse Str a)' verwenden?

+0

Bitte machen Sie dies beantwortbar - richtige Formatierung, keine Tippfehler und ** die Fehlermeldung **. – LogicStuff

+0

'char *'? Dies ist C++, in 2016. Verwenden Sie nicht 'char *'. –

Antwort

0

Sie sollten es so erklären:

void Str::operator=(const Str& a) 

Der Zuweisungsoperator einen Verweis auf seinen rechten Operanden erfordert (also &) und es nicht ändern (also const).

Verwandte Themen