我有父类“Entry”,它有两个子类,Income 和 Expense。我希望能够有一个像这样工作的功能:
bool SomeObject::removeEntry(Entry& item, list<Entry> *l)
{
if (l==&incomeHis)
return removeIncome(item);
if (l==&expHis)
return removeExp(item);
}
这可能吗?函数 removeExp()
需要类 Expense
的对象。由于我通过引用传递它,我知道它应该没问题,但编译器不同意。
最佳答案
编译器是正确的,因为它不能确保该行上的每个 Entry
恰好是一个 Expense
。
可以这么说,您将自己设计成了一个角落。
更好的设计是让 SomeObject::removeEntry
直接执行 removeIncome
和 removeExp
通用的任何逻辑。在逻辑不同的地方,调用 item
上的虚函数,这两种类型可能不同。
关于c++ - 将对父对象的引用传递给需要子对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788968/