2016-04-09 19 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); 


} 

Bu tür bir sınıf Str. Ben 'sınıf Str operatörü = (char *)' tanımlanmıştır ve böyle 'main.cpp' ilk birini kullanabilirsiniz:Fonksiyonda sınıf faktörünü nasıl kullanabilirim?

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

Ve iyi çalışma.

Fakat 'operator = (Str st a)' yi nasıl kullanabilirim?

böyle çalıştı:

Str c("Hamburger")l 

c = a; 

ben c ait bilgiler bekliyordu. Ben, c, artık hamburger bilgisi değil. c kektir. Ancak bu kodu derlediğimde, c, ancak bir çağrı hatası bilgisine sahiptir.

'operator = (class Str a)' nasıl kullanabilirim?

+0

Lütfen bu uygun - biçimlendirmeyi, yazım hatalarını ve ** hata mesajını ** yapın. – LogicStuff

+0

'char *'? Bu 2016 yılında C++. 'Char *' kullanmayın. –

cevap

0

Böyle beyan etmelidir:

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

atama operatörü sağ işlenenindeki (dolayısıyla &) bir başvuru gerektirir ve bunu (bu nedenle const) değiştirmez.

İlgili konular