我正在为 Qt 中的 REST API 创建某种路由器,并且在将函数指针插入 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*))'
我花了几个小时来解决这个问题,尝试了许多不同的方法来解决它,但没有成功。
所以我会很高兴收到任何建议。