仅默认参数有效

v78

头文件:

MainWindow(QWidget *parent = 0, ColumnHelper column_helper = ColumnHelper() );

.cpp 文件:

MainWindow::MainWindow(QWidget *parent, ColumnHelper column_helper)

用法:

SpreadColumnHelper column_helper;
MainWindow w(0,column_helper);

SpreadColumnHelper是的派生类ColumnHelper

但在中仅获取默认ColumnHelperMain()

编辑

我希望传递派生类,MainWindow()要传递基类。如何通过派生类?

蚂蚁

由于的参数MainWindow被声明为type的直接对象ColumnHelper,因此它将始终是type的对象ColumnHelper无论您作为参数传递什么,它都不可能以某种方式更改其类型。

尝试将aSpreadColumnHelper作为参数传递只会导致其“切片”到其ColumnHelper基础子对象。ColumnHelper对象将被接收MainWindow(这正是您所观察到的)。

如果您希望column_helper参数具有多态行为,则必须将其声明为指针或对的引用ColumnHelper,例如

MainWindow(QWidget *parent, ColumnHelper &column_helper)

或者可能

MainWindow(QWidget *parent = 0, const ColumnHelper &column_helper = ColumnHelper())

请注意,只有在将参数声明为const引用时,才可以提供一个临时对象作为默认参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章