QtでRESTAPI用のルーターのようなものを作成していますが、関数ポインターを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に配置する方法を2つ試しましたが、どちらも機能していません。エラーが発生しています:no matching function for call to 'QMap<QString, QByteArray* (*)(IBus*, ProxyRequest*)>::insert(const char [5], QByteArray* (UserModule::*)(IBus*, ProxyRequest*))'
私はこの問題に数時間を費やし、それを解決する方法をさまざまな方法で試しましたが、成功しませんでした。
ですから、アドバイスをいただければ幸いです。