class A
{
private:
class B
{
private:
std::mutex mu;
A* parent = NULL;
public:
B(A* const parent_ptr): parent(parent_ptr) {}
B(const A::B & b_copy) { /* I thought I needed code here */ }
};
public:
B b = B(this); //...to make this copy instruction work.
// (Copy constructor is deleted, need to declare a new one?)
};
У меня есть класс B
, который в основном представляет собой поточную очередь задач. Он содержит deque
, a mutex
и condition_variable
. Это облегчает отношения между потребителями и производителями между любыми двумя потоками, которые запускаются классом A
. Я упростил код как можно больше.Копировать или перемещать конструктор для класса с элементом std :: mutex (или другим не скопированным объектом)?
Проблема начинается с наличия mutex
в качестве члена: это удаляет конструктор копии по умолчанию. Это просто означает, что я могу построить с помощью B(this)
, но я не могу построить и, используя B b = B(this)
, что и нужно сделать в последней строке, чтобы дать классу A
членам класса B
. Каков наилучший способ решить эту проблему?