【发布时间】:2018-03-19 14:31:26
【问题描述】:
嗯,Hospital 是具有患者向量的类。
FemaleIn、FemaleOut、MaleIn、MaleOut 是患者的派生类(基类)。这些类有toString 函数(方法)。我想做的是,在Hospital 类中的display 方法中,我只想显示Outpatient 的情况,这是FemaleOut 和Maleout 的父类或Inpatient 这是父类FemaleIn 和 MaleIn 的类。根据我的想法,仅从 Outpatient 调用特定方法,我将不得不知道哪些对象在向量的哪个索引中自动用于。有什么想法只为特定类调用toString,例如FemaleIn 和MaleIn,其中父类是Inpatient。感谢您的任何帮助或建议。
void Hospital::determinePatientType()
{
int selection;
cout << endl;
cout << "What is the patient type?" << endl;
cout << "1. Female Inpatient" << endl;
cout << "2. Female Outpatient" << endl;
cout << "3. Male Inpatient" << endl;
cout << "4. Male Outpatient" << endl;
cout << endl;
cin >> selection;
switch(selection)
{
case 1:
patients.push_back(new FemaleIn());
cout << patients.back() << endl;
patients[totalPatients]->enterPatientData();
totalPatients++;
break;
case 2:
patients.push_back(new FemaleOut());
cout << patients.back() << endl;
patients[totalPatients]->enterPatientData();
totalPatients++;
break;
case 3:
patients.push_back(new MaleIn());
cout << patients.back() << endl;
patients[totalPatients]->enterPatientData();
totalPatients++;
break;
case 4:
patients.push_back(new MaleOut());
cout << patients.back() << endl;
patients[totalPatients]->enterPatientData();
totalPatients++;
break;
default:
return;
}
}
void Hospital::display(string type)
{
cout << "Patient Name Spouse Name Sex Patient Type Unit/Appt. Date Diagnosis" << endl;
cout << "===================================================================================" << endl;
if(type=="All")
{
for(int i=0;i<patients.size();i++)
{
patients[i]->toString();
}
}
else if(type=="Outpatient")
{
for(int i=0;i<patients.size();i++)
{
patients[i]->toString();
}
}
else
{
for(int i=0;i<patients.size();i++)
{
patients[i]->toString();
}
}
}
【问题讨论】:
-
问题是什么?
-
你能否分享一个更详细的代码sn-p来捕捉你的疑惑
-
不要派生这 4 个类。仅使用基类并在其中添加 2 个字段:性别和类型。打印前在循环中检查它们。
-
为每个派生类创建一个
getType()方法并查询if (patients[i]->getType() == type) patients[i]->toString();
标签: c++ inheritance vector base