在其他类 C++ 中创建多个对象

Posted

技术标签:

【中文标题】在其他类 C++ 中创建多个对象【英文标题】:Creating multiple object in other class C++ 【发布时间】:2018-03-17 14:31:13 【问题描述】:

我做了医院类和病人类,所以我想做的是让 Patient[] 病人

class Hospital

    public:
        Hospital();
        void determinePatientType();


    protected:

    private:
        Patient[] patients;
        char * fileName;
        int patientCapacity;
        char * hospitalName;
        int totalPatients;
;

【问题讨论】:

std::vector做一些研究。当然,请阅读a few good books,因为该语法是错误的。 您无法创建没有大小的数组。请改用std::vector<Patient> Hospital 类是否包含患者头文件? 如果我想使用动态分配怎么办?.. 我在哪里可以分配该对象的数组大小?谢谢。 @Alan 是的,我包含了患者的头文件。 【参考方案1】:

1- 这不是声明数组的方式:

    Patient[] patients;

您必须将下标运算符放在标识符之后而不是之前。

    Patient patients[size];

2- 您必须在编译时指定数组大小:

patient pat[size];

大小在编译时必须保持不变。如果您想要动态大小,请考虑使用动态数组。我也推荐使用类向量。

要使用动态数组,您应该使用指针:

patient* patients;

你可以在上面分配它:

patients = new patient[size];

您的课程可能如下所示:

包括 使用命名空间标准;

class Hospital
       public:
        Hospital(int); // constructor
        ~Hospital(); // destructor
        Hospital();
        void determinePatientType();

    private:
        Patient* patients;
        char * fileName;
        int patientCapacity;
        char * hospitalName;
        int totalPatients;
;

Hospital::Hospital(int size)
    patients = new Patient[size]; // allocating dynamic memory
    // some initialization and processing here



Hospital::~Hospital()
    delete[] patients; //freeing up memory

【讨论】:

你能告诉我在我的情况下如何使用动态数组吗? 哦,谢谢,最后,我有一个小问题,它必须在 main 函数中?或者哪个部分必须包含该语法? 非常感谢您的帮助。现在我明白了。 您的指针解决方案违反了五法则,每当有人复制或移动Hospital 时,这将导致未定义的行为和/或内存泄漏。没有理由不在这里使用std::vector 我没有提供完整的例子,我只是回答了 OP 的问题。

以上是关于在其他类 C++ 中创建多个对象的主要内容,如果未能解决你的问题,请参考以下文章

我可以在其他类中创建 Activity 的对象吗?

如何在 C++ 中创建一个类的多个实例

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

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

如何在 C++ 中创建类对象的向量?

如何在 C++ 中的类中创建对象?