头文件:
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
。
但在中仅获取默认ColumnHelper
类Main()
。
编辑
我希望传递派生类,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] 删除。
我来说两句