无法解释的语法错误定义线程池内部类定义
问题描述:
我有以下类定义,由于某些原因,我无法在类定义本身内定义线程池。它说:语法错误:标识符'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;
};
答
此行:resolverpool p(numberofpoolthreads);
在类定义中无效。你需要一个成员变量,然后在构造函数中初始化它。例如: -
class ResolverThreadPoolManager
{
public:
explicit ResolverThreadPoolManager(int numberofpoolthreads);
...
private:
const resolverpool p;
};
ResolverThreadPoolManager::ResolverThreadPoolManager(int numberofpoolthreads)
: p(numberofpoolthreads)
{}
答
在你行
resolverpool P(numberofpoolthreads);
参数“numberofpoolthreads”不是一个类型,所以这是一个格式错误的声明。也许
resolverpool p(int numberofpoolthreads);
?我想,也许不正确,你的错误信息也暗示错误发生在哪一行,这可以帮助缩小错误所在文件的位置。 (虽然通常只会指出“错误出现在这个或前面的一行”)
通常你像这样初始化线程池:boost :: threadpool:fifo_pool pool(5),其中5是线程池线程的数量。我想把这个数字保存在一个变量中,那么我该怎么做呢? – 2010-10-18 12:05:36
@Tony:查看我答案的更新。 – 2010-10-18 12:09:35