我有一个类似的课程:
class ThreadPool
{
thread *th;
void evFn(void);
unsigned i;
queue<function<void()>> Queue;
//mutex Queue_Mutex;
//condition_variable Cond_Var;
}
我还有另一个A类说法,它继承自ThreadPool
。然后我有一个这样的A类对象数组,我放在<vector>
容器中。这里的问题是mutex
和condition_variable
不会被复制到容器中。在复制构造函数中,有没有办法只复制类ThreadPool
的某些部分而不包括其余部分?
答案 0 :(得分:0)
我想我正在寻找的答案是将班级分为可移动和不可移动的部分。
struct B{};
class A
{
// movable
B b;
// non-movable
std::mutex m;
public:
A(A&& a): b(std::move(a.b))
// m is default-initialized.
{
}
};