我试图在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/