Для моей последней домашней работы CS я обязан создавать класс под названием Фильм, который исполняет обязанности, директора, год, оценка, агенты и т.д.
Затем я требуюсь считать файл, который содержит список этой информации, и сохраните ее в векторе указателей на Фильмы.
Я не уверен, что означает последняя строка. Это означает, я считал файл, создаю несколько Объектов видеоклипа. Затем сделайте вектор указателей, где каждый элемент (указатель) указывает на один из тех Объектов видеоклипа?
Я просто делаю два вектора - один из указателей и один из Фильмов и делаю непосредственное отображение этих двух векторов?
Это означает что-то вроде этого:
std::vector<Movie *> movies;
Затем вы добавляете в вектор при чтении строк:
movies.push_back(new Movie(...));
Не забудьте удалить все объекты Movie*
, как только вы закончите с вектором.
Насколько я понимаю, вы создаете класс Movie:
class Movie
{
private:
std::string _title;
std::string _director;
int _year;
int _rating;
std::vector<std::string> actors;
};
и, имея такой класс, вы создаете экземпляр вектора:
std::vector<Movie*> movies;
, поэтому вы можете добавить любой фильм в свою коллекцию фильмов. . Поскольку вы создаете вектор указателей на фильмы, не забудьте освободить ресурсы, выделенные экземплярами ваших фильмов, ИЛИ вы можете использовать некоторый умный указатель для автоматического освобождения фильмов:
std::vector<shared_ptr<Movie>> movies;
Динамически выделяя объект Movie с помощью new Movie()
, вы получаете указатель на новый объект. Вам не нужен второй вектор для фильмов, просто храните указатели, и вы сможете получить к ним доступ. Как написал Брайан, вектор будет определен как
std::vector
Но имейте в виду, что вектор не удалит ваши объекты после этого, что приведет к утечке памяти. Возможно, это не имеет значения для вашего домашнего задания, но обычно вы должны удалять все указатели, когда они вам больше не нужны.
Я не знаю, что означает последняя строка. Означает ли это, что я прочитал файл, создал несколько Объекты кино. Затем создайте вектор указателей, где каждый элемент (указатель) указывает на один из этих объектов Movie?
Я предполагаю, что это то, что задумано. Предполагается, что вы, вероятно, прочитаете данные для одного фильма, назначите объекту new
, заполните объект данными, а затем поместите адрес данных в вектор
(видимо, не лучший дизайн, но, скорее всего, все равно то, что задумано).