I am creating sort of a router for REST API in Qt and I am facing problem with inserting the function pointer into the QMap.
I have class IModule
from which the other modules are derivated.
Important lines of IModule.h
are
typedef QByteArray* (*IBusAction)(IBus * , ProxyRequest *);
class IModule : public QObject
{
Q_OBJECT
protected:
QMap<QString , IBusAction > *m_actions;
Then I have UserModule
which is derived from IModule
and in .cpp
file I have these lines:
QByteArray* UserModule::create(IBus *bus, ProxyRequest *req)
{
}
QByteArray* UserModule::show( IBus *bus, ProxyRequest *req)
{
}
UserModule::UserModule(QObject *parent) :
IModule(parent)
{
// register functions
m_actions->insert("show", &UserModule::show);
m_actions->insert("create", UserModule::create);
}
So I tried two options how to put the function in QMap with referencing sign also without it, but both are not working. I am getting error: no matching function for call to 'QMap<QString, QByteArray* (*)(IBus*, ProxyRequest*)>::insert(const char [5], QByteArray* (UserModule::*)(IBus*, ProxyRequest*))'
I have spent several hours with this problem, tried many different things how to solve it but there was no success.
So I will be very glad for any piece of advice.