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

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

我上了医院班和病人班,所以我要做的是让病人[]病人<这个。但是,出现了一些错误:在“[”标记之前应该有非限定id 我不知道这有什么不对。 谢谢你的回复

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的问题。