所以我有一個類層次結構,其基本上具有Entity
類作爲父抽象類和一束從它派生的其他類的的STL矢量調用一個特定對象的功能,如Door
,Player
,Ground
等上多態對象
我也有一個三維vector
存儲指針Entity
類型的對象,我用這個派生對象填充這個vector
。 在Door
類中,我有一個名爲isOpen()
的方法,它簡單地返回bool
。此函數特定於Door
類,並且在Entity
類中以及它的任何其他派生類型中均未找到(因爲我不需要檢查例如Ground
對象是否打開)。現在
,知道有在vector
i
位置,j
,k
Door
存在類型的對象,我想調用的方法isOpen
像這樣:vector[i][j][k]->isOpen()
。不幸的是,當我這樣做時,編譯器返回class Entity has no member named isOpen()
。這是可以理解的,因爲函數isOpen()
對Door
類是排他性的,但是爲了使這種調用成爲可能,我可以做些什麼?
不要只告訴我們你的代碼; ***顯示***它*更*更有效率。其次,['dynamic_cast <>'](http://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-and-reinterpret-cast-be-used)可能有些用處您。不要只是把它扔進去,閱讀如何使用它**先**。 – WhozCraig