无法调用构造函数
inability to call the constructor
我有一个构造函数,如下所示:
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++中同一类中的构造函数调用的方法返回的值
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 确保所有构造函数调用相同的函数 c++ 设计模式
- 减少复制构造函数调用
- 使用回调函数从构造函数调用虚拟/派生方法的替代方法?
- 在 Google 测试中,我可以从构造函数调用 GetParam() 吗?
- C++ - 从另一个类构造函数调用类构造函数
- 在C++中初始化带有和不使用构造函数调用的对象有什么区别
- 是否可以从移动构造函数调用默认构造函数?
- 在模板生成器模式中分解重复的构造函数调用
- std::atexit 从全局对象的构造函数调用时的排序
- 对构造函数调用的约束
- 编译器错过了无效的构造函数调用,并调用不存在的(或私有的)默认构造函数
- 用构造函数调用填充向量
- 创建指针时是否没有构造函数调用
- 使用 emplace_back 避免移动构造函数调用的最佳方法?
- C++ 抽象类构造函数调用
- 为什么函数参数将带有参数的构造函数调用
- 为什么比“构造函数”调用更多的“解构器”调用
- 将对象传递给函数并不是导致构造函数调用