gpt4 book ai didi

c++ - 仅更改函数的特定默认参数

转载 作者:IT老高 更新时间:2023-10-28 21:40:43 24 4
gpt4 key购买 nike

我正在使用 qt 并尝试使用 QInputDialog::getText() 函数从 Documentation 获取用户输入函数的定义是:

QString QInputDialog::getText(QWidget * parent, const QString & title, const QString & label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString & text = QString(), bool * ok = 0, Qt::WindowFlags flags = 0, Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

这是我的代码:

bool ok=0;
newAddress = QInputDialog::getText(0,"Enter an Address to Validate",
"Adress: comma separated (e.g Address line 1, Address line 2, City, Postal Code)"
,&ok);

但我得到了错误:

error: no matching function for call to 'QInputDialog::getText(int, const char [29], const char [80], bool*)'
,&ok);
^

但是当我传入 *ok 参数之前的所有参数时,例如:

bool ok=0;
newAddress = QInputDialog::getText(0,"Enter an Address to Validate",
"Adress: comma separated (e.g Address line 1, Address line 2, City, Postal Code)"
,QLineEdit::Normal,
QString(),&ok);

它有效。

我真的不明白为什么我不能只更改我想要的默认参数并将其余参数保留为默认值?。

最佳答案

当您为具有默认参数的特定参数传递值时,您必须为它之前的所有默认参数传递值。否则,您传递的值将作为第一个默认参数的值。

所以你必须这样做:

newAddress = QInputDialog::getText(
0,
"Enter an Address to Validate",
"Adress: comma separated (e.g Address line 1, Address line 2, City, Postal Code)",
QLineEdit::Normal,
QString(),
&ok);

bool * 参数后面的参数可以省略传递值。

[dcl.fct.default]/1 中的 C++ 标准规定

Default arguments will be used in calls where trailing arguments are missing.

关于c++ - 仅更改函数的特定默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com