C++ 纯虚拟类没有名为的成员
我想创建一个数据持久性级别,所以我创建了一个纯虚拟类IDbAdapter,它提供了一些函数。之后,我开发了一个类MySQLAdapter,它派生IDbAdapter并实现所有纯虚拟函数。 这是代码: IDB适配器.hC++ 纯虚拟类没有名为的成员,c++,c++11,C++,C++11,我想创建一个数据持久性级别,所以我创建了一个纯虚拟类IDbAdapter,它提供了一些函数。之后,我开发了一个类MySQLAdapter,它派生IDbAdapter并实现所有纯虚拟函数。 这是代码: IDB适配器.h #ifndef IDBADAPTER_H #define IDBADAPTER_H #include <Message.h> class IDbAdapter { public: IDbAdapter() {}; virtual ~IDbAdapt
#ifndef IDBADAPTER_H
#define IDBADAPTER_H
#include <Message.h>
class IDbAdapter
{
public:
IDbAdapter() {};
virtual ~IDbAdapter() {};
virtual int insertMessage( Message *msg ) = 0;
}
MySQLAdapter.h
#ifndef MYSQLADAPTER_H
#define MYSQLADAPTER_H
#include <IDbAdapter.h>
#include <Database.h>
#include <Message.h>
class MySQLAdapter : public IDbAdapter
{
public:
MySQLAdapter( Database *db );
virtual ~MySQLAdapter();
int insertMessage( Message *msg );
private:
Database *_db;
}
MySQLAdapter.cpp实现insertMessage在数据库实例上执行查询并返回代码错误。
问题是main.cpp如下所示:
#include <iostream>
#include <IDbAdapter.h>
#include <MySQLAdapter.h>
#include <Message.h>
#define db_host "tcp://127.0.0.1"
#define db_username "user"
#define db_password "pwd"
#define db_name "test"
using namespace std;
using namespace sql;
int insertdb(IDbAdapter *idba)
{
MQTTMessage *m = new MQTTMessage("CIAO","CIAOCIAO");
return idba->insertMessage(m);
}
int main()
{
Database *db = new Database( db_host, db_username, db_password, db_name );
MySQLAdapter *dba = new MySQLAdapter( db );
MQTTMessage *m = new MQTTMessage("Message1","Hi All");
int result = DB_ERROR;
result = insertdb(dba);
cout << "Message inserted: " << result << endl;
delete m;
delete dba;
delete db;
return EXIT_SUCCESS;
}
MySQLAdapter.cpp和Database.cpp在名为libmydb.so的共享库中编译。
现在,在编译时,我在insertdb函数上遇到了这个错误:“IDbAdapter”类没有名为insertMessage的成员
问题出在哪里?您的错误可能是类“IDbAdapter”没有名为insertMessageOUT的成员
这是因为IDbAdapter::insertMessageOUT不存在。idba->insertMessageOUT?返回idba->insertMessageOUTm;IDbAdapter中没有成员函数insertMessageOUT。您引用的错误文本为insertMessage,但insertdb中的插入调用为insertMessageOUT,它不存在。你确定你准确地引用了那个错误文本吗?对不起,我的错误。我编辑了这个问题。编译错误是准确的。非常感谢。