我有代码:

UserDialog::UserDialog(DatabaseHandler &db,
                       QWidget *parent) :
    UserDialog{db, User(), parent}
{
}

UserDialog::UserDialog(DatabaseHandler &db, User &user, QWidget *parent):
    QDialog{parent},
    ui{new Ui::UserDialog},
    mDB{db},
    mUser{user}
{
    //...
}


如何正确创建新的User对象并将其作为参数传递给调用构造函数?

UserDialog{db, User(), parent}

最佳答案

由于构造函数期望可变的左值,因此必须提供一个现有的User对象:

User user;
UserDialog{db, user, parent};


如果不需要继续存在用户对象,则可以将构造函数参数类型更改为const User&,在这种情况下,将接受临时变量。

07-28 01:32