仅复制 parts/fields 个 class 个对象
Copying only certain parts/fields of class object
我有一个 class 像这样:
class ThreadPool
{
thread *th;
void evFn(void);
unsigned i;
queue<function<void()>> Queue;
//mutex Queue_Mutex;
//condition_variable Cond_Var;
}
我还有一个class A say,继承自ThreadPool
。然后我有一个这样的 class A 对象数组,我把它们放在 <vector>
容器中。这里的问题是 mutex
和 condition_variable
不会被复制到容器中。在复制构造函数中有没有办法只复制 class ThreadPool
的某些部分并排除其余部分?
我想我正在寻找的答案是将 class 分为可移动和不可移动的部分。
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.
{
}
};
我有一个 class 像这样:
class ThreadPool
{
thread *th;
void evFn(void);
unsigned i;
queue<function<void()>> Queue;
//mutex Queue_Mutex;
//condition_variable Cond_Var;
}
我还有一个class A say,继承自ThreadPool
。然后我有一个这样的 class A 对象数组,我把它们放在 <vector>
容器中。这里的问题是 mutex
和 condition_variable
不会被复制到容器中。在复制构造函数中有没有办法只复制 class ThreadPool
的某些部分并排除其余部分?
我想我正在寻找的答案是将 class 分为可移动和不可移动的部分。
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.
{
}
};