我试图在C ++中覆盖这样的基类

class A:
    QWidget *getWidget();

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


当我尝试使用此功能时:

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


在这里,将返回类A的小部件。有没有办法获得小部件B?由于我不想先检查类并转换为B以获得正确的小部件,因此我希望能够像上面的代码片段一样使用它。有什么建议么?

最佳答案

首先,如果要函数调用的动态多态解析,则应将getWidget()声明为virtual。那应该可以解决您要解决的特定问题。

其次,using A::getWidget是无用的,因为您要将A的函数getWidget()导入到B的范围内,该范围已经定义了具有相同名称和签名的函数。

关于c++ - 覆盖基类无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14676254/

10-09 19:38