我目前在班上有一个构建问题。开发是在Qt / c ++中完成的
header.h
class Ui_DialogBoxProgress : public QDialog
{
Q_OBJECT
public:
explicit Ui_DialogBoxProgress(QWidget *parent = 0, Cache& cache);
~Ui_DialogBoxProgress();
Cache& m_cache;
src.cpp
Ui_DialogBoxProgress::Ui_DialogBoxProgress(QWidget *parent, Cache& cache) :
QDialog(parent),
m_cache(cache),
ui(new Ui::Ui_DialogBoxProgress)
{
ui->setupUi(this);
...
目前错误是:
header.h:21: error: missing default argument on parameter 'cache'
explicit Ui_DialogBoxProgress(QWidget *parent = 0, Cache& cache);
并且调用在main.cpp中完成,如下所示:
DeleteProgress = new Ui_DialogBoxProgress(*this, *cache);
^
缓存是下面定义的类:
class Cache
{
public:
Cache();
..
有什么想法吗?我已经使用过这种方法,但构建从不抱怨
答案 0 :(得分:1)
一旦为函数参数定义了默认值,之后每个参数都需要一个默认参数。这是一个C ++规则,而不仅仅是Qt。在您的情况下,这实际上很困难,因为您通过非const引用获取第二个参数。你可以切换函数参数的顺序,还是需要重构很多代码?您也可以通过指针而不是引用来Cache
;那么你可以为该参数设置一个默认参数nullptr
。
This SO thread有一个不错的解决方案,您可能需要查看。