在我的班级之一的构造函数我有这样一行:试图向下转换对象的指针的std ::矢量
m_Projects = std::vector<parent_project>(); //m_Projects type is std::vector<parent_project>
m_Current = nullptr; //m_Current type is parent_project*
在这同一类的功能,我有这样一行:
m_Projects.push_back(local_project(TITLE, DEMO, FILE)); //local_project class derives from parent_project class.
在这同一类的第三个功能我有这行:
m_Current = &m_Projects[0];
if (dynamic_cast<local_project*>(m_Current))
SetCurrentProject(dynamic_cast<model::local_univariate::local_univariate_project*>(m_Current));
的dynamic_cast的返回一个空值,但据我所知,因为m_Current是指向m_Projects的第一个元素的指针,所以m_Projects是一个local_project对象。我想我可能会错过一些东西。
正是如此。搜索“对象切片”以了解更多信息。 –
谢谢你们俩。我没有想到我的对象被复制。当我在调试器中仔细观察时,我现在意识到这一点(扩展矢量显示严格的一些基类对象)。 – DreamTool
应该至少提到独特的ptr,这几乎肯定比原始指针更可能是正确的,因为他的向量当前拥有这些对象。 –