在我的班級之一的構造函數我有這樣一行:試圖向下轉換對象的指針的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,這幾乎肯定比原始指針更可能是正確的,因爲他的向量當前擁有這些對象。 –