Передать массив символов параметризованному конструктору

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] для * жанра члена класса?

0

Решение

Конструктор может быть вызван только во время объявления объекта. Ваш конструктор выглядит хорошо, но код в main не является.

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

Также имейте в виду, что любая память, выделенная с использованием new не будет освобожден, пока вы явно не сделаете это. Сделать деструктор, чтобы сделать это.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]