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);
}
Помогите мне понять, где моя вина? Я думаю, что у меня не хватает указателя 🙁 Как назначить массив [20] для * жанра члена класса?
Конструктор может быть вызван только во время объявления объекта. Ваш конструктор выглядит хорошо, но код в main
не является.
int main() {
char n[20];
cin >> n;
books harrypotter(n); // calling parameterized constructor
cout << harrypotter.genre; // == cout << n;
}
Также имейте в виду, что любая память, выделенная с использованием new
не будет освобожден, пока вы явно не сделаете это. Сделать деструктор, чтобы сделать это.
Других решений пока нет …