【问题标题】:Making an array in a class with object count of another class in C++在 C++ 中使用另一个类的对象计数在一个类中创建一个数组
【发布时间】:2020-04-04 06:50:23
【问题描述】:

如果我们在 c++ 中有两个类 Movie 和 Movies 会怎样。 Movie 类具有与该类关联的所有属性和方法。而 Movies 类是 Movie 对象的集合。所以我的理解是,我们必须在movies类中创建一个数组,其中包含movie类的所有对象,但是我们怎样才能以这种方式编写movies类的代码呢?

【问题讨论】:

  • 但是我们怎样才能为电影类编写代码呢? 就像任何其他程序一样,您可以按照正确的顺序一个接一个地放置字符。我的建议是您查阅您的编程参考资料,然后尝试自己解决问题。如有必要,请询问有关尝试的问题。
  • 您还需要了解使用类的基本概念。看看quora.com/When-should-I-use-classes-in-C++

标签: c++ arrays class oop


【解决方案1】:

使用向量比使用数组更好

#include <vector>

class Movie
{
    ...
};

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

至于班上的其他人,这完全取决于你。想想你想要对一组电影进行哪些操作,然后编写代码。例如,您可能想知道您的收藏中有多少部电影,您可能想将一部电影添加到您的收藏中,您可能想在您的收藏中找到一部特定的电影。想想你想要什么并为此编写代码。

【讨论】:

    【解决方案2】:

    如果您事先不知道对象的数量(假设您使用main() 中的rng 生成Movie 的对象,或者您的教授将创建随机数量的对象)然后使用向量。

    另一种选择是在构造函数中对它们进行计数,并通过函数将计数值作为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()];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多