首页 > 解决方案 > 使用基类向量和派生类指针进行对象切片

问题描述

这是我的场景的简化版本:

class Base
{
    class Entry
    {
        ...
    }

    std::vector<Entry *> entryList;

    void processEntry() = 0;

    void OnProcessEntry(); // processEntry callback
};

class Derived : public Base
{
    class Entry : public Base::Entry
    {
        ...
    }

    void processEntry() 
    {
         ...
         entryList.push_back(new Entry); 
         OnProcessEntry();
    }
};

当我将Derived::Entry指针复制到entryList时,对象被切片到Base::Entry. 有什么方法可以让条目在基类方法中恢复到原来的“未切片”状态OnProcessEntry

如果有人可以推荐一个更合适的标题,请做,我会编辑。

谢谢。

标签: c++

解决方案


推荐阅读