我正在尝试将functor传递给函数指针,但是存在编译错误。我该如何使用这个仿函数?
#include <iostream>
#include <QDebug>
class MessageHandler
{
public:
MessageHandler(int val) : m_int(val)
{
}
void operator() (QtMsgType type, const char *msg)
{
if (type == QtDebugMsg)
std::cout << "Debug: " << msg << " (" << m_int << ")" << std::endl;
}
private:
int m_int;
};
int main(int argc, char *argv[])
{
MessageHandler handler(5);
qInstallMsgHandler(handler);
qDebug() << "test";
return 0;
}
qInstallMsgHandler的参数是指向具有以下签名的函数的指针的typedef:
void myMsgHandler(QtMsgType, const char *);
谢谢。