【发布时间】:2022-01-27 19:47:48
【问题描述】:
我是 C++ 新手,最近我开始学习便便我想创建一个类 movies 和一个类。
directors 一个类 movie 应该有一个 directors 数组,我想从控制台填充该数组。当我运行代码时,它会显示第一行和第二行并停止执行:
enter image description here
这是我的代码:
#include<iostream>
#include<string>
using namespace std;
class directors{
string name;
string lastname;
public:
directors(){
}
directors(string a,string b){
name=a;
lastname=b;
}
void createdirector(){
cout<<"name of director:"<<endl;
cin>>name;
cout<<"last name:"<<endl;
cin>>lastname;
}
};
class movie{
string name;
directors* director;
public:
film(){
directors* director=new directors[20];
};
void creatmovie(){
cout<<"name of movie"<<endl;
cin>>name;
director[0].createdirector();
}
};
int main(){
movie a;
a.creatmovie();
}
【问题讨论】:
-
使用
std::vector。无论如何,请提取并提供minimal reproducible example 及其作为文本生成的输出。作为她的新用户,也请收下tour,阅读How to Ask。 -
作为 C++ 新手,您应该做的第一件事就是给自己一个 good C++ book。
-
您的代码甚至不应该编译:您已向
movie添加了一个film成员,该成员使用构造函数的语法,但使用的名称与包含类的名称不同。此外,任何动态分配资源的类也应该包含释放这些资源的逻辑,通常在析构函数中,所以假设你为数组movie::director分配内存,应该有析构函数在做delete[] director;为了让它正常工作,你需要确保如果构造函数成功完成,director要么包含通过new[]分配的值,要么为 null。