在Qt / C ++上构建问题

时间:2015-05-14 17:10:15

标签: c++ qt

我目前在班上有一个构建问题。开发是在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();
..

有什么想法吗?我已经使用过这种方法,但构建从不抱怨

1 个答案:

答案 0 :(得分:1)

一旦为函数参数定义了默认值,之后每个参数都需要一个默认参数。这是一个C ++规则,而不仅仅是Qt。在您的情况下,这实际上很困难,因为您通过非const引用获取第二个参数。你可以切换函数参数的顺序,还是需要重构很多代码?您也可以通过指针而不是引用来Cache;那么你可以为该参数设置一个默认参数nullptr

This SO thread有一个不错的解决方案,您可能需要查看。