Я создаю своего рода маршрутизатор для REST API в Qt, и у меня возникла проблема со вставкой указателя функции в QMap.
У меня есть класс IModule
, из которого получены другие модули. Важные строки IModule.h
typedef QByteArray* (*IBusAction)(IBus * , ProxyRequest *);
class IModule : public QObject
{
Q_OBJECT
protected:
QMap<QString , IBusAction > *m_actions;
Затем у меня есть UserModule
, который является производным от IModule
, а в файле .cpp
у меня есть эти строки:
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);
}
Итак, я попробовал два варианта, как поставить функцию в QMap со ссылочным знаком и без него, но оба не работают. Я получаю сообщение об ошибке: no matching function for call to 'QMap<QString, QByteArray* (*)(IBus*, ProxyRequest*)>::insert(const char [5], QByteArray* (UserModule::*)(IBus*, ProxyRequest*))'
Я потратил несколько часов на эту проблему, пробовал много разных способов ее решения, но безуспешно.
Так что буду очень рад любому совету.