错误:"类主窗口"没有名为'insertMessage'的成员

Error:'class MainWindow' has no member named 'insertMessage'

本文关键字:成员 insertMessage 窗口 错误      更新时间:2023-10-16

我正在为客户端-服务器程序编写一个SQLite数据库。

我在myserevr.cpp中写了这样的插入消息函数:

void myserver::insertMessage(QString IPAddrress, QDate date, QString message)
{
    QSqlQuery query;
    query.prepare("INSERT INTO messages(IPAddress, date, message)"" values(?,?,?)");
    query.addBindValue(IPAddrress);
    query.addBindValue(date);
    query.addBindValue(message);
    query.exec();
    qDebug() << query.lastError();
}

我在main.cpp中这样称呼它:

MainWindow myserver;
bool create = QFile::exists("Message.dat");
if (!myserver.createConnection())
   return 1;
if (create)
   myserver.insertMessage();

但我得到以下错误:"错误:'classMainWindow'没有名为'insertMessage'的成员"

我该怎么办?非常感谢

好吧,在定义类的成员时不应该使用对象名,而应该使用类名。如果insertMessageclass MainWindow的函数,则不应使用myserver定义它。

 void myserver::insertMessage(QString IPAddrress, QDate date, QString message)//wrong

正确的定义应该如下。

void MainWindow::insertMessage(QString IPAddrress, QDate date, QString message)
{
    QSqlQuery query;
    query.prepare("INSERT INTO messages(IPAddress, date, message)"" values(?,?,?)");
    query.addBindValue(IPAddrress);
    query.addBindValue(date);
    query.addBindValue(message);
    query.exec();
    qDebug() << query.lastError();
}

注意:当您调用inserrMessage时,应该使用相关参数进行调用。

这就是调用函数的方式

QString ip;
QDate date;
QString msg;
if (create)
       myserver.insertMessage(ip,date,msg);//no arguments given which is wrong .Pass relevant arguments .

您在类型为MainWindowmyserver上调用insertMessage(),对吗?但从您发布的代码来看,insertMessage()函数似乎是为类myserver定义的。请检查您是否正在对正确的对象调用正确的函数。

此外,您调用insertMessage()时没有参数,但您提供的定义需要两个参数。另外,请检查您是否有两个版本的函数insertMessage(),即一个在MainWindow中,另一个用于myserver