错误:'class MainWindow'没有名为'insertMessage'的成员

时间:2015-12-28 09:20:04

标签: c++ qt

我正在为客户端服务器程序编写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();

但是我收到以下错误: “错误:'类MainWindow'没有名为'insertMessage'的成员”

我该怎么办?非常感谢

2 个答案:

答案 0 :(得分:4)

那么,在定义类的成员时不应该使用对象名,而应该使用类名。 如果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 .

答案 1 :(得分:1)

您正在insertMessage() myserver上呼叫MainWindow,对吗?但是从您发布的代码中,似乎为类insertMessage()定义了myserver函数。请检查您是否在正确的对象上调用了正确的功能。

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