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);
}
帮我理解我的错在哪里?我认为我缺乏指针:(如何将n [20]数组分配给类的*类型成员?
答案 0 :(得分:1)
只能在声明对象时调用构造函数。您的构造函数看起来没问题,但main
中的代码不是。
int main() {
char n[20];
cin >> n;
books harrypotter(n); // calling parameterized constructor
cout << harrypotter.genre; // == cout << n;
}
另外,请记住,在您明确这样做之前,不会释放使用new
分配的任何内存。让析构函数去做。