在类定义中定义线程池的无法解释的语法错误

时间:2010-10-18 11:56:26

标签: c++ class syntax

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

2 个答案:

答案 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);
?我想,也许是错误的,你的错误信息也提示错误发生在哪一行,这可以帮助缩小文件中错误所在的位置。 (虽然,通常只表示“错误出现在此行或前一行。”)