C++ 在其他类C+中创建多个对象+;
我上了医院班和病人班,所以我要做的是让病人[]病人<这个。但是,出现了一些错误:在“[”标记之前应该有非限定id 我不知道这有什么不对。 谢谢你的回复C++ 在其他类C+中创建多个对象+;,c++,arrays,object,inheritance,C++,Arrays,Object,Inheritance,我上了医院班和病人班,所以我要做的是让病人[]病人 要使用动态数组,应使用pointesrs: patient* patients; 您可以在上面的图层上进行分配: patients = new patient[size]; 您的类可能看起来像: 包括 使用名称空间std class Hospital{ public: Hospital(int); // constructor ~Hospital(); // destructor
class Hospital
{
public:
Hospital();
void determinePatientType();
protected:
private:
Patient[] patients;
char * fileName;
int patientCapacity;
char * hospitalName;
int totalPatients;
};
1-这不是声明数组的方式:
Patient[] patients;
必须使下标运算符位于标识符之后而不是之前
Patient patients[size];
2-必须在编译时指定数组大小,以便:
patient pat[size];
编译时的大小必须是常数。如果你想要一个动态的大小,那么考虑使用动态数组。我也建议使用类向量。< /P> 要使用动态数组,应使用pointesrs:
patient* patients;
您可以在上面的图层上进行分配:
patients = new patient[size];
您的类可能看起来像:
包括
使用名称空间std
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
}
做一些关于的研究。当然,这是错误的。你不能创建一个没有大小的数组。试试看
std::vector
。Hospital类是否包含patient头文件?如果我想使用动态分配怎么办?我在哪里可以分配该对象数组的大小?谢谢。@Alan是的,我包含了pat的头文件客户端。你能告诉我如何在我的情况下使用动态数组吗?哦,谢谢,最后,我有一个快速的问题,它必须在主函数中?或者哪个部分必须包含该语法?非常感谢你的帮助。现在我知道了。你的指针解决方案违反了五条规则,这将创建未定义的行为和/或每当有人复制或移动医院时内存泄漏。没有理由不在这里使用std::vector
。我没有提供完整的示例,我只是回答了OP的问题。