将char数组传递给参数化构造函数

时间:2016-04-02 13:12:58

标签: c++ class parameterized

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]数组分配给类的*类型成员?

1 个答案:

答案 0 :(得分:1)

只能在声明对象时调用构造函数。您的构造函数看起来没问题,但main中的代码不是。

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

另外,请记住,在您明确这样做之前,不会释放使用new分配的任何内存。让析构函数去做。