我有

no matching function for call to 'saveLine::saveLine()'

编译我的应用程序时出错。实际上从未真正调用过该构造函数。

saveLine类定义:
class saveLine
{
public:
    saveLine(QWidget *parent);
private:
    QPushButton *selectButton, *acceptButton;
    QLabel *filePath;
    QLineEdit *allias;
};

saveLine用于另一个类,其定义如下:
class MWindow : public QWidget
{
    Q_OBJECT
public:
    MWindow(QWidget *parent=0);
private:
    saveLine line1;
};

错误指向MWindow构造函数实现
MWindow::MWindow(QWidget *parent):QWidget(parent)
{
    this->setWindowTitle("Launcher");
    this->resize(600,600);
}

我该怎么办?我打算在 vector 中使用saveLine类,以在运行时创建行。

编辑:我错误地声明了line1,它应该显示为
saveLine *line1;

但是现在它又给出了另一个错误
ISO C++ forbids declaration of 'saveLine' with no type


expected ';' before '*' token

在这条线上。似乎saveLine不再被视为类,怎么回事?

最佳答案



您需要添加一个前向声明以告知编译器saveLine类存在:

像这样:

//declare that there will be a class saveLine
class saveLine;

class MWindow : public QWidget
{
    Q_OBJECT
public:
    MWindow(QWidget *parent=0);
private:
    saveLine *line1;
};

10-04 14:47