传递对父对象的引用以实现想要子对象的功能

时间:2013-04-03 13:40:15

标签: c++ function inheritance parent

我有父类“入口”,它有两个孩子,收入和费用。我希望能够有一个这样的功能:

bool SomeObject::removeEntry(Entry& item, list<Entry> *l)
{
    if (l==&incomeHis)
        return removeIncome(item);
    if (l==&expHis)
        return removeExp(item);
}

有可能吗?函数removeExp()需要类Expense的对象。由于我通过引用传递它,我知道它应该没问题,但是编译器不同意。

1 个答案:

答案 0 :(得分:1)

编译器是正确的,因为它无法确保该行上的每个Entry恰好是Expense

你已经设计了自己的角落,可以这么说。

更好的设计是让SomeObject::removeEntry直接执行removeIncomeremoveExp共有的任何逻辑。如果逻辑不同,请在item上调用虚函数,这两种类型可能不同。