многопоточность — запуск C ++ POCO в потоке

У меня одна проблема при компиляции.

Я получаю ошибку:

В функции члена
‘void CSConnection :: onReadable (const
Poco :: AutoPtr&) ‘: |
CSConnection.cpp | 92 | ошибка: нет
функция сопоставления для вызова
«Poco :: ThreadPool :: заводится (QuitHandler *) ‘|
CSConnection.cpp | 92 | примечание: кандидаты
являются: |
C: \ MinGW \ Bin .. \ Lib \ НКУ \ mingw32 \ 4.7.2 …….. \ Include \ Poco \ ThreadPool.h | 122 | Примечание:
void Poco :: ThreadPool :: start (Poco :: Runnable&) |
C: \ MinGW \ Bin .. \ Lib \ НКУ \ mingw32 \ 4.7.2 …….. \ Include \ Poco \ ThreadPool.h | 122 | Примечание:
нет известного преобразования для аргумента 1 из ‘QuitHandler
* к
«Poco :: Runnable&«|
C: \ MinGW \ Bin .. \ Lib \ НКУ \ mingw32 \ 4.7.2 …….. \ Include \ Poco \ ThreadPool.h | 127 | Примечание:
void Poco :: ThreadPool :: start (Poco :: Runnable&константная строка&) |
C: \ MinGW \ Bin .. \ Lib \ НКУ \ mingw32 \ 4.7.2 …….. \ Include \ Poco \ 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

Решение

Метод 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]