C ++ POCO在线程问题中运行

时间:2013-08-20 22:13:19

标签: c++ multithreading poco runnable

编译时遇到了一个问题。

我发现错误:

  

在会员功能中   'void CSConnection :: onReadable(const   波科:: AutoPtr和放大器;)“:|   CSConnection.cpp | 92 |错误:没有   匹配函数用于调用   '波科::线程池::开始(QuitHandler *的)' |   CSConnection.cpp | 92 |注意:候选人   主要有:|   C:\ MinGW的\ BIN .. \ LIB \ GCC \的mingw32 \ 4.7.2 ........ \ \包括波科\ ThreadPool.h | 122 |注:   void Poco :: ThreadPool :: start(Poco :: Runnable&)|   C:\ MinGW的\ BIN .. \ LIB \ GCC \的mingw32 \ 4.7.2 ........ \ \包括波科\ ThreadPool.h | 122 |注:   从'QuitHandler *'到参数1没有已知的转换   '波科:: Runnable接口和放大器;' |   C:\ MinGW的\ BIN .. \ LIB \ GCC \的mingw32 \ 4.7.2 ........ \ \包括波科\ ThreadPool.h | 127 |注:   void Poco :: ThreadPool :: start(Poco :: Runnable&,const string&)|   C:\ MinGW的\ BIN .. \ LIB \ GCC \的mingw32 \ 4.7.2 ........ \ \包括波科\ ThreadPool.h | 127 |注:   候选人需要2个参数,1个提供| || ===构建完成:1   错误,0警告(0分钟,1秒)=== |

这是quithandler类:

class QuitHandler : public Runnable
{
    public:
        QuitHandler(){}
        CSConnection * _con;
        void run();
        virtual ~QuitHandler();
    protected:
    private:
        char * _packet;
};

这里有错误行

QuitHandler * qh;
qh = new QuitHandler();
WorkerThreadPool::getInstance().tp->start(qh);

谢谢!

1 个答案:

答案 0 :(得分:1)

start方法接受引用,而不是指针:http://pocoproject.org/docs/Poco.ThreadPool.html#11337

快速修复将是:

QuitHandler qh;
WorkerThreadPool::getInstance().tp->start(qh);

QuitHandler* qh = new QuitHandler();
WorkerThreadPool::getInstance().tp->start(*qh);