仅复制类对象的某些部分/字段

时间:2017-10-28 14:06:25

标签: c++ constructor copy mutex stdvector

我有一个类似的课程:

class ThreadPool
{
   thread *th;
   void evFn(void);
   unsigned i;
   queue<function<void()>> Queue;
   //mutex Queue_Mutex;
   //condition_variable Cond_Var;
}

我还有另一个A类说法,它继承自ThreadPool。然后我有一个这样的A类对象数组,我放在<vector>容器中。这里的问题是mutexcondition_variable不会被复制到容器中。在复制构造函数中,有没有办法只复制类ThreadPool的某些部分而不包括其余部分?

1 个答案:

答案 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.
  {

  }
};