如何向两个上层超类发送多个值

C++ How send multiple values to two upper superclass?

本文关键字:超类 两个      更新时间:2023-10-16

首先考虑工厂系统。我创建了一个Date类来保存人的生日和开始工作的日期我还有person类,它保存人名,姓氏等信息。最后有一个部门类,我想初始化所有关于个人和部门id和部门名称的信息(姓名,姓氏…(如生日、入职日期)。我在部门头文件中创建了Person类型的数组。我的问题是,我怎么能写部门构造初始化所有属性。名字、姓氏没有问题……但是Date类需要3个参数。我怎么能发送那里的参数与其他参数从部门类?

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();
}

有两种方法:

  • 在类的构造函数中取一个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) {
}