我有父类“入口”,它有两个孩子,收入和费用。我希望能够有一个这样的功能:
bool SomeObject::removeEntry(Entry& item, list<Entry> *l)
{
if (l==&incomeHis)
return removeIncome(item);
if (l==&expHis)
return removeExp(item);
}
有可能吗?函数removeExp()
需要类Expense
的对象。由于我通过引用传递它,我知道它应该没问题,但是编译器不同意。
答案 0 :(得分:1)
编译器是正确的,因为它无法确保该行上的每个Entry
恰好是Expense
。
你已经设计了自己的角落,可以这么说。
更好的设计是让SomeObject::removeEntry
直接执行removeIncome
和removeExp
共有的任何逻辑。如果逻辑不同,请在item
上调用虚函数,这两种类型可能不同。