在 C++ 中使用另一个类的对象计数在一个类中创建一个数组

Posted

技术标签:

【中文标题】在 C++ 中使用另一个类的对象计数在一个类中创建一个数组【英文标题】:Making an array in a class with object count of another class in 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++ 【参考方案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()];

【讨论】:

以上是关于在 C++ 中使用另一个类的对象计数在一个类中创建一个数组的主要内容,如果未能解决你的问题,请参考以下文章

在另一个类 MATLAB 中创建一个类的对象数组

在C++ 如何在堆中创建一个类的对象? 谢谢!

在 C++ 中的类中创建类对象的动态数组

如何调用在另一个函数中创建的对象

使用 C++ 调用 C# 时无法在另一个应用程序域中创建对象

C#winform中为啥一个窗体的对象可以调用在另一个窗体中创建的一个类未实例化下