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

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

最佳答案

构造函数只能在对象声明时调用。您的构造函数看起来不错,但 main 中的代码却不行。

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

另外,请记住,使用 new 分配的任何内存都不会被释放,除非您明确这样做。制作一个析构函数来做到这一点。

关于c++ - 将 char 数组传递给参数化构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373710/

相关文章:

c++ - 如果 block 无法访问错误

c++ - 如何使数组成为 C++ 中函数的参数?

android - onCreate 之前的 Activity 无法使用系统服务?

java - 运行java参数化类给出错误

c# - 有没有办法创建接受 <= N 参数的参数化查询或存储过程?

c++ - 我可以在 using 声明中正确使用 C++20 概念吗?

c++ - boost::any 和模板

javascript - Jquery - 如何在文档区域中选择具有相同类名的 2 个元素?

c++ - 将类对象放在 vector 中?

参数化类的java单例