无法解释的语法错误定义线程池内部类定义

问题描述:

我有以下类定义,由于某些原因,我无法在类定义本身内定义线程池。它说:语法错误:标识符'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) 
    {} 
+0

通常你像这样初始化线程池:boost :: threadpool:fifo_pool pool(5),其中5是线程池线程的数量。我想把这个数字保存在一个变量中,那么我该怎么做呢? – 2010-10-18 12:05:36

+0

@Tony:查看我答案的更新。 – 2010-10-18 12:09:35

在你行
resolverpool P(numberofpoolthreads);
参数“numberofpoolthreads”不是一个类型,所以这是一个格式错误的声明。也许
resolverpool p(int numberofpoolthreads);
?我想,也许不正确,你的错误信息也暗示错误发生在哪一行,这可以帮助缩小错误所在文件的位置。 (虽然通常只会指出“错误出现在这个或前面的一行”)