我正在为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