我正在为客户端服务器程序编写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'的成员”
我该怎么办?非常感谢
答案 0 :(得分:4)
那么,在定义类的成员时不应该使用对象名,而应该使用类名。
如果insertMessage
是class 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
中的一个版本。