在其他类 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++ 中创建多个对象的主要内容,如果未能解决你的问题,请参考以下文章