我是C ++的初学者,我正在尝试创建2个类,每天都存储Movie。
例如,星期六有2部电影。其中一部电影是蝙蝠侠,另一部是蜘蛛侠。所以对象Day saturday
应该存储2个不同的电影。但问题是,当我尝试在类showAllMovies()
中使用函数Day
显示星期六存储的对象时,它只显示了最后一部电影。知道我做错了什么吗?
编辑:我只能使用这些库,因为我的作业不允许我使用其他库。
<iostream>, <iomanip>, <fstream>, <cmath>
#include <iostream>
using namespace std;
class Movie {
private:
char* name;
public:
void setName(char* n) {
name = n;
}
char* getName() {
return name;
}
};
class Day {
private:
int movieCount = 0;
Movie movie[20];
public:
void addMovie(Movie p) {
movie[movieCount] = p;
movieCount++;
}
void showAllMovies() {
for (int i = 0;i < movieCount;i++) {
cout << "Index: " << i << ", Name: " << movie[i].getName() << endl;
}
}
};
int main()
{
Day saturday;
int numOfMovies = 0;
cout << "Input the number of Movies: " << endl;
cin >> numOfMovies;
cout << "Input the name of Movie: " << endl;
for (int i = 0;i < numOfMovies;i++) {
char movieName[10];
//Get input
cin >> movieName;
Movie m;
m.setName(movieName);
saturday.addMovie(m);
}
//Show all the name of movies
cout << "All movies on saturday: " << endl;
saturday.showAllMovies();
return 0;
}
输入: 2 蝙蝠侠 蜘蛛侠
我希望得到像
这样的东西All movies on saturday:
Index: 0, Name: Batman
Index: 1, Name: Spiderman
感谢大家帮帮我。解决方案是改变
char movieName[10];
到
char *movieName = new char[10];
答案 0 :(得分:3)
for (int i = 0;i < numOfMovies;i++) {
char movieName[10];
//Get input
cin >> movieName;
Movie m;
m.setName(movieName);
saturday.addMovie(m);
}
当您在内部致电setName
时,您name
(Movie
对象的字段)指向movieName
- 但是,movieName
会在下一个由于范围而导致for循环的迭代。
循环结束后也不应访问movieName
的最后一个实例。