我會先顯示我的代碼,然後再解釋我的問題:溯造型在容器基類派生類
std::vector<std::unique_ptr<SGUIObject> > m_objects;
const std::unique_ptr<SGUIObject>& SGUIManager::getObject(const std::string& object_name)
{
for (auto const& iter : m_objects)
{
if (iter.get()->getObjectName() == object_name)
return iter;
}
}
//SButton is derived from SGUIObject
//m_clicked is a boolean member in SButton (private)
//isClicked is a public member method of SButton
const bool isClicked() const { return m_clicked; }
if (dynamic_cast<SButton>(SSceneManager::getGUIManager().getObject("testbutton").isClicked()))
std::cout << "Clicked!" << std::endl;
我只是複製從幾個不同的文件粘貼,所以它看起來奇怪,當所有放在一起。無論如何,我想要做的是從SGUIObject向下轉換爲SButton,並在if/else循環中調用isClicked()。 Code :: Blocks給我這個錯誤:
錯誤:'const class std :: unique_ptr'沒有名爲'isClicked'的成員|
我有一種感覺,我有一個輕微的語法問題,如果有人向我解釋,我會非常感激。
謝謝!
你的括號是錯誤的。 – OlivierH