error: no matching function for call to ‘Poco::ThreadPool::start(TemplateMatch::MatchTask*)’ match_pool.start(new MatchTask(stream_template[i], code_stream));
时间: 2024-03-09 17:51:08 浏览: 115
这个错误提示表明,你正在使用`Poco::ThreadPool`的`start()`方法向线程池中添加任务,但是方法的参数类型与实际类型不匹配,导致编译错误。
出现这种错误的原因可能是你定义的`MatchTask`类没有实现`Poco::Runnable`接口,或者`Poco::ThreadPool::start()`方法的参数类型不匹配。
你可以尝试修改`MatchTask`类的定义,让它继承`Poco::Runnable`接口,并实现`run()`方法。例如:
```c++
class MatchTask : public Poco::Runnable
{
public:
MatchTask(StreamTemplate* streamTemplate, CodeStream* codeStream)
: _streamTemplate(streamTemplate), _codeStream(codeStream)
{
}
void run() override
{
// 执行任务
// ...
}
private:
StreamTemplate* _streamTemplate;
CodeStream* _codeStream;
};
```
另外,你需要确保`Poco::ThreadPool::start()`方法的参数类型与`MatchTask`类的实际类型匹配。如果`MatchTask`类没有实现`Poco::Runnable`接口,则需要使用`Poco::RunnableAdapter`类来适配`MatchTask`类的`run()`方法,例如:
```c++
MatchTask task(stream_template[i], code_stream);
Poco::RunnableAdapter<MatchTask> adapter(task, &MatchTask::run);
match_pool.start(adapter);
```
这样可以确保`Poco::ThreadPool::start()`方法的参数类型与实际类型匹配,避免编译错误。
阅读全文