通过linkedlist访问c ++派生类

时间:2014-12-12 21:39:22

标签: c++ class

我正在尝试编写一个具有一个基类(Employee)和两个派生类(Staff和Manager)的程序。 我将数据存储在链接列表中。

在尝试访问管理器的功能时,由于我认为是向下倾斜,我遇到了问题? 当从节点的链表中接收数据时,它假定其类型为Employee - 我需要它的类型为Manager来访问私有函数。 我尝试过它,但它并不喜欢我如何使用这些变量。

有谁知道如何解决此问题并启用对派生类中的函数的访问?  请注意我对此非常陌生,所以如果我发现了一个明显的错误,请记住这一点!

void displayManagerDetails(const List<Employee*> list)
{
    unsigned long longID = getID();
    List<Employee*> temp(list);
    system("CLS");
    cout << "Name         Department      Salary\n";
    cout << "--------------------------------------------------------\n\n";
    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();
    }
}

如果您需要更多代码,请告诉我,但我认为这一切都是相关的:)

1 个答案:

答案 0 :(得分:1)

您似乎是根据代码中的其他用法错误地从链接列表中提取指针。尝试:

Manager * test = dynamic_cast< Manager * >( temp.first().data );