使用基类向量和派生类指针进行对象切片

时间:2019-06-21 09:59:15

标签: c++

这是我的情况的简化版本:

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中,有什么方法可以使Entry返回到其原始的“未切片”状态?

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

谢谢。

0 个答案:

没有答案