C ++如何将多个值发送到两个上层超类?

时间:2014-05-17 14:32:12

标签: c++

首先考虑工厂系统。我创建了一个Date类来保存人的生日和工作的初始日期 我有人类,其中包含有关人名,姓氏等的信息。 最后有一个部门类,我想初始化有关人员和部门ID和部门名称(姓名,姓氏,生日,工作日期的初始)的所有信息。我在部门头文件中的Person类型中创建了一个数组。我的问题是我如何编写deparment构造来初始化所有属性。姓名,姓氏没有问题......但是日期类需要3个参数。如何将参数与Department类中的其他参数一起发送?

class Date {
int gun,ay,yil;

public:

int getDay()const;
int getMonth()const;
int getYear()const;

void set_Day(int);
void setMonth(int);
void setYear(int);

    Date();
    Date(int,int,int);
    virtual ~Date();

}
class Deparment
{


    int     bolumId;
    string  bolumName;
    static const int maxkisi = 10;
    Person *PersonArray = new Person[maxkisi];
    static int counter;
    Date datex,datey;
    public:
    int     getBolumId()const;
    string  getBolumName()const;
    int     getTemelMaas()const;
    Person    getPersonArray()const;

    void setBolumId(int);
    void setBolumName(string);
    void setKisiarray(string,string,int,int);

        Bolum();
        Bolum(string,string,int,Date,Date,int,string);
        virtual ~Bolum();

}

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现:

  • 在班级的构造函数中使用Date对象,或
  • 在班级的构造函数中获取日期的参数。

这两种方法中的每一种都有其优点和缺点:

第一种方法隐藏了Date来自调用者的参数,因此调用者可以以他希望的任何方式构造Date

Person(const string& _name, const string& _surname, const Date& _dob)
:   name(_name), surname(_surname), dob(_dob) {
}

第二种方法可让您隐藏来自调用方的Date,如果您的类Date公开为外部可见属性,那么这是很好的。换句话说,您可以隐藏您的班级使用Date的事实,如果您将来需要这样做,可以让您从该实施中切换。

Person::Person(const string& _name, const string& _surname, int dd, int mm, int yy)
:  name(_name), surname(_surname), dob(Date(mm, dd, yy) {
}