2013-02-03 48 views
0

我试图重写基类像这样的C++重写基类工作不正常

class A: 
    QWidget *getWidget(); 

class B: public A: 
    using A::getWidget; 
    QWidget *getWidget(); 

当我尝试使用此:

A *test = new B(); 
test->getWidget(); 

这里,从A类的小工具返回。有没有办法获得小部件B?由于我不想从检查我的班级开始,然后转而选择B来获取正确的小部件,因此我希望能够像上面的代码片段一样使用它。有什么建议么?

回答

6

首先,如果您希望函数调用的动态多态分辨率,您应该声明getWidget()virtual。这应该解决您正在解决的特定问题。

其次,using A::getWidget是没用的,因为你要导入A的功能getWidget()B范围,它已经定义具有相同名称和签名的功能。

+0

就是这样!谢谢! – anopheles

1

是C++代码吗? LE:也不要忘记基类中的虚析构函数。

+0

它是伪C++代码:)感谢您的帮助! – anopheles