c++ - 将对父对象的引用传递给需要子对象的函数

标签 c++ function inheritance parent

我有父类“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 直接执行 removeIncomeremoveExp 通用的任何逻辑。在逻辑不同的地方,调用 item 上的虚函数,这两种类型可能不同。

关于c++ - 将对父对象的引用传递给需要子对象的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788968/

相关文章:

c++ - 打印输出函数 C++ 时出错

c++ - 在继承类中重载 << 和 >>

c++ - 静脉模拟终止调用 openssl ECDSA_SIG_get0 函数

c++ - 声明已初始化的 C++ 静态变量(语法消歧)

c++ - 使用 OpenMP 的并发和优化

c++ - c++中的函数返回如何工作

python - 将奇数放在列表的连续元素中 : Python 3. 2

r - 如何在 Base 中生成 "Unbalanced"(不等)因子水平?

c++ - 无需继承直接访问类接口(interface)中成员的成员

java - 继承成本 Java (Android)