通过 linkedlist 访问 C++ 派生类
c++ derived class access through linkedlist
我正在尝试编写一个具有一个基类(员工)和两个派生类(员工和经理)的程序。我将数据存储在链表中。
在尝试访问管理器的功能时,由于我认为是向下转换,我遇到了问题?当从节点的链表中接收数据时,它假定其类型为 Employee - 因为我需要它是 Manager 类型才能访问私有函数。我试图向上投射它,但它不喜欢我使用变量的方式。
有谁知道如何解决此问题并启用对派生类中函数的访问? 请注意,我对此很陌生,所以如果我犯了一个明显的错误,请记住这一点!
void displayManagerDetails(const List<Employee*> list)
{
unsigned long longID = getID();
List<Employee*> temp(list);
system("CLS");
cout << "Name Department Salaryn";
cout << "--------------------------------------------------------nn";
while (!temp.isEmpty())
{
if (temp.first().data->getEmpNo() == longID && temp.first().data->getType() == "Manager")
{
Manager hold = temp.first();
Employee* pEmp = &hold;
Manager* test = dynamic_cast<Manager*>(pEmp);
cout << test->getSalary()
return;
}
temp.deleteFirst();
}
}
如果您需要进一步的代码,请告诉我,但我认为这就是所有相关:)
您似乎根据代码中的其他用法错误地从链表中提取指针。 尝试:
Manager * test = dynamic_cast< Manager * >( temp.first().data );
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 在派生函数中指定void*参数
- 如何通过派生类函数更改基类中的向量
- 如何委托派生类使用其父构造函数?
- 如何使用单独文件中的派生类访问友元函数对象
- 派生类销毁的最佳实践是什么
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 存储模板类型以强制转换回派生<T>
- 需要从 istream 和 ostream 派生 iostream
- 在 C++ 中用派生类型重写成员函数
- 具有多个类、派生类的C++正向声明
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 如果基类包含双指针成员,则派生类的构造函数
- 为什么此派生对象无法访问基类的后递减方法?
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践