Qt 5 C++ 对 Class::function(QString, Qstring, ..) 的未定义引用

Qt 5 C++ undefined reference to Class::function(QString, Qstring, ...)

本文关键字:Qstring 引用 未定义 QString C++ Class function Qt      更新时间:2023-10-16

我知道这个问题以前在这个论坛上已经回答过,但我需要更具体的帮助。

代码如下:

会话窗口.cpp

#include "sessionwindow.h"
#include "ui_sessionwindow.h"
#include "session.h"
#include "utils.h"
#include <QStringList>
SessionWindow::SessionWindow(QWidget *parent) : QDialog(parent), ui(new Ui::SessionWindow)
{
    ui->setupUi(this);
    this->setFixedSize(this->size());
}
SessionWindow::~SessionWindow()
{
    delete ui;
}
void SessionWindow::on_cancelBtn_clicked()
{
    close();
}
void SessionWindow::on_createBtn_clicked()
{
    QString min = (ui->isMin) ? "min" : "nomin";
    QString sp = (ui->spHidd) ? "nosp" : "sp";
    QString name = ui->sessionName->text();
    QString user = ui->skUser->text();
    QString pass = ui->skPass->text();
    Utils u;
    u.createSession(name, user, pass, min, sp);
}

utils.h (声明函数原型的地方)

#ifndef UTILS_H
#define UTILS_H
#include <QString>
#include <QStringList>
class Utils
{
public:
    Utils();
    ~Utils();
    void startSkype(QString, QString, QStringList);
    void createSession(QString , QString, QString, QString, QString);
};
#endif // UTILS_H

utils.cpp (函数所在的位置)

#include "utils.h"
#include "session.h"
#include <QString>
#include <QStringList>
#include <QVector>
#include <QDebug>
QVector<Session> sessions;
Utils::Utils()
{
}
Utils::~Utils()
{
}
void Utils::startSkype(QString user, QString pass, QStringList options)
{
}
void createSession(QString name, QString user, QString pass, QString isMin, QString spHid)
{
    sessions.append(Session(name, user, pass, isMin, spHid));
}

问题是我无法编译它,它只是抛出一个错误:未定义对"Utils::createSession(QString, QString, QString, QString, QString)"的引用

对不起,如果我解释不好,谢谢你的帮助!! :D

你忘了把Utils::放在方法定义前面:

void createSession(QString name, QString user, QString pass, QString isMin, QString spHid)
{
    sessions.append(Session(name, user, pass, isMin, spHid));
}

应该是

void Utils::createSession(QString name, QString user, QString pass, QString isMin, QString spHid)
{
    sessions.append(Session(name, user, pass, isMin, spHid));
}