Создание массива в классе с подсчетом объектов другого класса в C ++ - PullRequest
0 голосов
/ 04 апреля 2020

Что делать, если у нас есть два класса Mov ie и Movies в c ++. Класс Mov ie имеет все атрибуты и методы, связанные с классом. Принимая во внимание, что класс Movies - это коллекция объектов Mov ie. Итак, что я понял из этого, так это то, что мы должны создать массив в классе фильмов, в котором есть все объекты класса mov ie, но как мы можем написать код для класса фильмов таким образом?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Лучше использовать вектор, чем массив

#include <vector>

class Movie
{
    ...
};

class Movies
{
public:
    ...
private:
    std::vector<Movie> data;
};

Что касается остальной части класса, это действительно ваше дело. Подумайте, какие операции вы хотите выполнить для коллекции фильмов, и закодируйте их. Например, вы можете захотеть узнать, сколько фильмов в вашей коллекции, вы можете добавить mov ie в свою коллекцию, возможно, вы захотите найти определенный mov ie в своей коллекции. Просто подумайте, что вы хотите, и напишите код для этого.

1 голос
/ 04 апреля 2020

Если вы не знаете, сколько объектов было предварительно (скажем, вы генерируете объекты Movie, используя rng в main(), или ваш профессор создаст случайное количество объектов), тогда используйте вектор.

Другой вариант - подсчитать их в конструкторе и вернуть значение счетчика через функцию в качестве размера нужного массива в Movies:

class Movie 
{
    public:
    Movie() { ++count; }
    Movie(const Movie&) { ++count; }
    Movie() { --count; }

    static size_t movieCount()
    { return count; }

    static size_t count;
};
size_t Movie::count = 0;

class Movies : public Movie
{ 
  public:
  Movie array[movieCount()];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...