g ++ жалуется, что оператор присваивания по умолчанию не будет работать, поскольку он пытается это сделать -> x = x, что невозможно сделать, поскольку x является постоянным.
g ++жалуется правильно.Ваш класс не удовлетворяет копируемым требованиям стандартных контейнеров, поэтому вы не можете использовать его с ними.
Есть ли способ обойти это?
Конечно, есть.Даже более чем одним способом.
Например, самая очевидная вещь: вы можете удалить квалификаторы const
из членов, чтобы сделать класс копируемым.
Или иначе вы можете хранить указатели (или умные указатели)к контейнерам вместо объектов (один конкретный способ сделать это - то, что предложил tpg2114).