我正在爲C++構建一個GUI類,並且使用指針處理很多事情。一個例子電話:我在做什麼這個指針錯誤嗎?
mainGui.activeWindow->activeWidget->init();
我在這裏的問題是,我想向activeWidget指針轉換爲另一種類型。 activeWidget是GUI_BASE類型。從BASE派生我有其他的類,比如GUI_BUTTON和GUI_TEXTBOX。我想將指針從GUI_BASE投影到GUI_TEXTBOX,其中activeWidget。我認爲它看起來像這樣:
(GUI_TEXTBOX*)(mainGui.activeWindow->activeWidget)->function();
這不起作用,因爲編譯器仍然認爲指針的類型是GUI_BASE。然而,下面的一段代碼確實有效:
GUI_TEXTBOX *textbox_pointer;
textbox_pointer = (GUI_TEXTBOX*)mainGui.activeWindow->activeWidget;
textbox_pointer->function();
我希望我的問題在這裏只是一個語法問題。感謝您的幫助:)
C++樣式提示:ALL_CAPS通常保留用於預處理器定義。我在boost郵件列表中爲一個模板參數使用了全部大寫名稱,因此我的屁股突然發生了一次,而且它仍然很疼。 – 2008-12-01 20:26:40