我有以下类定义,由于某种原因,我无法在类定义本身内定义线程池。它说:语法错误:标识符'numberofpoolthreads'我尝试在类中直接定义它,但它给了我相同的语法错误,有谁知道这是为什么?
#include "stdafx.h"
#include <boost/threadpool.hpp>
#include <boost/threadpool/pool.hpp>
#include <boost/threadpool/detail/pool_core.hpp>
typedef boost::threadpool::fifo_pool resolverpool;
class ResolverThreadPoolManager
{
public:
ResolverThreadPoolManager::ResolverThreadPoolManager(int numberofpoolthreads);
ResolverThreadPoolManager::~ResolverThreadPoolManager();
resolverpool p(numberofpoolthreads);
private:
int numberofpoolthreads;
};
答案 0 :(得分:1)
这一行:resolverpool p(numberofpoolthreads);
在类定义中无效。您需要一个成员变量,然后在构造函数中初始化该变量。 e.g:
class ResolverThreadPoolManager
{
public:
explicit ResolverThreadPoolManager(int numberofpoolthreads);
...
private:
const resolverpool p;
};
ResolverThreadPoolManager::ResolverThreadPoolManager(int numberofpoolthreads)
: p(numberofpoolthreads)
{}
答案 1 :(得分:0)
在你的行中
resolverpool p(numberofpoolthreads);
参数“numberofpoolthreads”不是类型,因此这是一个格式错误的声明。也许
resolverpool p(int numberofpoolthreads);
?我想,也许是错误的,你的错误信息也提示错误发生在哪一行,这可以帮助缩小文件中错误所在的位置。 (虽然,通常只表示“错误出现在此行或前一行。”)