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

标签 c++ class syntax

我有以下类定义,但出于某种原因我无法在类定义本身内部定义线程池。它说: syntax error: identifier '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)
    {}

关于c++ - 在类定义中定义线程池的无法解释的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958853/

相关文章:

c++ - C++中operator()和operator<有什么区别?

C++ 管理对象

syntax - 为什么宏调用后没有分号?

c++ - 使用 std::find 从 vector 中选择一个项目

c++ - 这段 Arduino 代码有什么作用?

c++ - 此代码中的段错误在哪里?

c++ - 存储地址以在 vector 中堆栈分配的对象

javascript - 在 JavaScript 中从子类调用基类中的私有(private)方法的解决方法

C++ 理解类和构造函数

syntax - 如何在 Swift 中重写 Objective C 委托(delegate)方法