我有以下方法(只有一个参数),我想适应多于1个参数。我试图使用默认参数,但这不起作用。 (只有旧方法的原始代码工作正常)让我感到震惊的是,在该daclaration中省略了变量名。 为什么?
这是我原来的方法:
void importFile(QString *);
这是我的新方法:
void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS =0 );
当我编译这段代码时,Qt告诉我“ QList的默认参数IMPORT_FILE_PARAMETERS的类型为int
有什么问题? 我不使用int - 他为什么要告诉我int?
感谢您的帮助
答案 0 :(得分:4)
QList<QVariant> IMPORT_FILE_PARAMETERS =0
这没有任何意义。您将0
(与错误消息中的int
一样)作为QList
的默认参数,尝试将其设为默认构造列表:
QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>()
至于
让我感到震惊的是,在那里省略了变量名 daclaration。为什么?
编译器根本不关心声明中的名称,只需知道参数类型即可。您也可以在函数的定义中省略它,但是您无法访问该参数。
答案 1 :(得分:2)
您的默认参数是&#34; 0&#34;,这是一个整数,对吗?
使用此:
void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>());
这会使默认参数为空QList
。
答案 2 :(得分:1)
QList不是int 您正在尝试为该类型分配值0(零),这是一个int。