c++ - 无法调用构造函数
问题描述
我有一个看起来像这样的构造函数:
scacfg(const QString &caption, QWidget *parent);
scacfg::scacfg(const QString &caption = "Click Me", QWidget *parent = nullptr) : QWidget(parent)
checkBox(new QCheckBox("Enabled")),
button(new QPushButton(caption)) {....}
我试图这样称呼它:
QStringList groups = sttngs->childGroups();
foreach (const QString grp, groups) {
scacfg *config = new scacfg(grp);
但是编译器抱怨错误:没有匹配函数调用'scacfg::scacfg(const QString&)'
scacfg *config = new scacfg(grp);
而且我不确定为什么这是原型中提供的默认值。如果有人可以解释,我如何最好地解决这个问题,将不胜感激!
解决方案
您使用错误的默认参数。正如Geeks for Geeks所说(强调我的):
默认参数是函数声明中提供的值,如果函数的调用者没有为具有默认值的参数提供值,则编译器会自动分配该值。
换句话说,您将默认部分放在错误的位置。试试这个:
scacfg(const QString &caption = "Click Me", QWidget *parent = nullptr);
scacfg::scacfg(const QString &caption, QWidget *parent) : QWidget(parent)
checkBox(new QCheckBox("Enabled")),
button(new QPushButton(caption)) {....}
注意:经过更多研究,您似乎可以将其放入其中之一,但特别是,如果您将实现放在不同的文件中,您将遇到此类问题。
推荐阅读
- c++ - C++ 多线程程序因 BUS 错误而崩溃
- mapbox-gl-js - 在 MapboxGL 上显示的 mvt 矢量图块
- html - 在引导列中定位元素
- python - 通过使用 Python 应用 Excel 公式创建一个新的数据框列
- python - 从跨度中提取文本
- php - 更新到 PHP 7.4 后的错误:未捕获的错误:调用数组上的成员函数 find()
- kubectl - k8s 集群上的“kubectl get”cli 响应时间太长
- javascript - HTTP 响应中缺少 react-admin
- c# - 在 Visual Studio 2019 社区中将 Azure API 链接到 C# ASP.Net 项目的问题
- java - 使用 Jolt 对键进行 JSON 到 JSON 转换