将仿函数传递给函数指针

时间:2011-04-27 16:04:24

标签: c++

  

可能重复:
  passing functor as function pointer

我正在尝试将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 *);

谢谢。

0 个答案:

没有答案