【问题标题】:c++ derived class access through linkedlistc++ 通过链表访问派生类
【发布时间】:2014-12-12 21:39:22
【问题描述】:

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

在尝试访问 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();
    }
}

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

【问题讨论】:

标签: c++ class


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2021-05-23
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多