【发布时间】:2015-09-17 04:14:16
【问题描述】:
我创建了一个类层次结构,其中第一层超类是员工。在我的第二层,我有 2 个子类,称为管理人员和学术人员。 (这两层也是抽象类)。学术人员还有 2 个仅教学和仅研究的子类。
在我的主要工作中,我试图创建一个包含 10 个工作人员指针(5 个管理员和 5 个学术指针)的数组,并使用指针操作第 3 层子类。 请记住,第 3 层子类具有在第 1 层或第 2 层中不存在的行为。因此,我必须使用类型转换。 我可以单独更改我的第 3 层行为,例如,
((ResearchStaff *)ptr[i])->setResearchHour(23);
但它很快就会变得非常混乱。 我的问题是,如何在 for 或 while 循环中访问我的第 3 层行为,而无需单独设置它们。这是我正在使用的主要内容。非常感谢!!
int main()
{
Staff *ptr[10];
for(int i=0;i<10;i++)
{
ptr[i] = new AdminStaff;
((AdminStaff *)ptr[i])->setAdmin(12);
i++;
ptr[i] = new TeachingStaff;
(( TeachingStaff*)ptr[i])->setTeaching(16);
}
}
【问题讨论】:
标签: c++ pointers abstract-class multiple-inheritance dynamic-arrays