2016-04-02 19 views
0
class books{ 
public: 
    char* genre; 
    books(char *n); 
}; 

books::books(char*n){ 
    genre = new char[strlen(n)+1]; 
    strcpy(genre,n); 
} 

int main(){ 
    book harrypotter; 
    char n[20]; 
    cin>>n; 
    harrypotter.books(n); 
} 

Sorunumun nerede olduğunu anlamama yardım et. Sanırım bir 'eksik işaretim var :(n [20] dizisini sınıfın 3. sınıf üyesine nasıl atayabilirim?Parametre oluşturucu yapılandırıcıya giriş dizisi

cevap

1

Bir kurucu yalnızca bir nesnenin beyanı sırasında çağrılabilir. tamam ama main kod değildir.

int main() { 
    char n[20]; 
    cin >> n; 
    books harrypotter(n);   // calling parameterized constructor 
    cout << harrypotter.genre;  // == cout << n;  
} 

Ayrıca, herhangi bir bellek açıkça bunu gerçekleştirene kadar new serbest olmayacak kullanılarak ayrılan akılda tutmak yoktur. bunu yapmak için bir yıkıcı olun.

+0

teşekkürler adam, çok yardımcı oldu: DI fonksiyonunu çağırırken DI oldu :)) – Cool

+0

Ayrıca yardımcı olabilirsiniz – anukul