无法访问对象数组中的对象

时间:2017-03-22 01:24:20

标签: c++ arrays object

我有一个对象数组,我无法弄清楚如何访问对象内部的其他对象。

在这种情况下,对象的数组称为__setstate__。我试图访问ArrayExam类中的对象。

我尝试使用ExamRoom,但仍然没有运气。

有什么想法吗?

标题

ArrayExam[0]->Doc = new Doctor();

标题的功能

#include"IOheader.h"

class Person
{
protected:
    string name;
    string MEDcode;
public:
    Person();
    Person(string sName,string sCode);
    void SetName(string sName);
    string ReturnName();
    string ReturnMEDcode();

};


class Doctor : public Person
{
private:
    int room;

public:
    Doctor() :Person() { room = 0; };
    Doctor(string sName, string sCode, int iRoom) : Person(sName, sCode) { room = iRoom; };
    void SetRoom(int iRoom);
    int ReturnRoom();

};

class Patient :public Person
{
private :
    string EMcode;
    int age;
public:
    Patient() :Person() { EMcode = ""; age = 0; };
    Patient(string sName, string sCode,int iAge, string sEMcode) : Person(sName, sCode) { age = iAge; EMcode = sEMcode;};
};

class Child :public Patient
{
public:
    Child() :Patient() {};
    Child(string sName, string sCode, int iAge, string sEMcode) : Patient(sName,sCode,iAge,sEMcode) {};
};

class ExamRoom
{
protected:
    Person *Doc;
    Person *Pat;
    queue <WaitRoom> WaitQue;
public:
    ExamRoom();

};

class WaitRoom
{
private:
    Person *Wait;
public:
    WaitRoom() {};
};

class Hospital
{
private:
    ExamRoom *ArrayExam[50];
public:
    Hospital();
    void Test();
};

1 个答案:

答案 0 :(得分:0)

ExamRoom的成员(例如Doc)受到保护。这就是你无法访问它们的原因。要直接访问它们,例如ArrayExam[0]->Doc,您需要公开成员。或者,您可以创建“setter”方法来间接设置成员变量。例如,对于Doc,您可以创建方法

SetDoc(Person* doc)
{
    this->Doc = doc;
}

由于您是为ExamRoom实例等对象手动分配空间,因此应确保释放所有不再需要后动态创建的对象。