【问题标题】:QList default parameter error message (default argument for QList<QVariant> has type int)QList 默认参数错误消息(QList<QVariant> 的默认参数具有 int 类型)
【发布时间】:2017-03-07 08:02:36
【问题描述】:

我有以下方法(它只有 1 个参数),我想调整它以用于超过 1 个参数。我尝试使用默认参数,但这不起作用。 (仅使用旧方法的原始代码可以正常工作)让我印象深刻的是该声明中省略了变量名。 为什么?

这是我原来的方法:

void importFile(QString *);

这是我的新方法:

 void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS =0 );

当我编译这段代码时,Qt 告诉我“QList IMPORT_FILE_PARAMETERS 的默认参数具有 int 类型

有什么问题? 我不使用 int - 他为什么要告诉我有关 int 的信息?

感谢您的帮助

【问题讨论】:

  • 在声明中 - 它只是不需要,编译器只需要类型,放一个名字只是为了人类可读性。在 C++ 文件中 - 如果您不使用该变量,您将不会收到未使用变量的警告。
  • 您的标题与您似乎提出的问题几乎没有关系。但是如果你问一个问题会更容易。
  • 考虑重载而不是使用默认参数。除非您的代码运行完全相同,无论 IMPORT_FILE_PARAMETERS 是否是默认构造的,否则这很可能是更简洁的方法。

标签: c++ qt methods parameters default-parameters


【解决方案1】:
QList<QVariant> IMPORT_FILE_PARAMETERS =0

这毫无意义。您将0(这是一个int,如您的错误消息中所示)作为QList 的默认参数,尝试将其设为默认构造列表:

QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>()

至于

让我印象深刻的是,其中省略了变量名 宣言。为什么?

编译器根本不关心声明中的名称,它只需要知道参数类型。你也可以在函数的定义中省略它,但是你不能访问参数。

【讨论】:

    【解决方案2】:

    你的默认参数是“0”,它是一个整数,对吧?

    使用这个:

    void importFile(QString *, QList<QVariant> IMPORT_FILE_PARAMETERS = QList<QVariant>());
    

    这将使默认参数为空QList

    【讨论】:

      【解决方案3】:

      QList 不是 int 您正在尝试为该类型分配一个值 0(零),它是一个 int。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 2011-01-09
        相关资源
        最近更新 更多