通过 linkedlist 访问 C++ 派生类

c++ derived class access through linkedlist

本文关键字:派生 C++ 访问 linkedlist 通过      更新时间:2023-10-16

我正在尝试编写一个具有一个基类(员工)和两个派生类(员工和经理)的程序。我将数据存储在链表中。

在尝试访问管理器的功能时,由于我认为是向下转换,我遇到了问题?当从节点的链表中接收数据时,它假定其类型为 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 );