【问题标题】:C++ How send multiple values to two upper superclass?C ++如何将多个值发送到两个上层超类?
【发布时间】:2014-05-17 22:59:45
【问题描述】:

首先考虑一个工厂系统。我创建了一个 Date 类来保存人的生日和工作的初始日期。例如 我有 person 类,其中包含有关人名、姓氏等的信息。 最后有一个部门类,我想初始化有关人员和部门 ID 和部门名称的所有信息(姓名、姓氏..、生日、上班日期)。我在部门头文件中创建了一个人员类型的数组。我的问题是我如何编写 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();

}

【问题讨论】:

  • 我正在尝试上传其他课程但给我错误!

标签: c++


【解决方案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) {
}

【讨论】:

  • 从人员类设置没有问题我的问题是我想从部门类(日期
  • @firehorse 我只能看到Date,所以我不知道从Person 初始化Date 与从Department 初始化有什么区别。
  • 非常感谢您的帮助。我将尝试上传其他课程以进行清晰的讨论..
  • @firehorse 这就是方法#1,对吧?您可以将Date 参数更改为const Date& 参数,并保持其他所有内容相同。
猜你喜欢
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2013-04-27
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
相关资源
最近更新 更多