这是我的情况的简化版本:
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返回到其原始的“未切片”状态?
如果有人可以推荐一个更合适的标题,请这样做,我会进行编辑。
谢谢。