Редактировать: @Als имеет точку, деструктор также неправильно назван для вашего класса. Обновленный ответ.
Проблема в том, что g ++ считает, что, поскольку у вас есть виртуальные методы в классе, у вас должен быть виртуальный деструктор. Это связано с тем, что если вы наследуете класс и расширяете его, вы можете выделить память или другие ресурсы, которые деструктор базового класса не имеет понятия об очистке, и если ваш деструктор не является виртуальным, деструктор базового класса может быть вызван в некоторых случаях вместо вашего реального деструктора.
Практическое правило: если у вас есть виртуальные методы в вашем классе, используйте виртуальный деструктор. Удаление неправильно названного деструктора ~ очереди и помещение
virtual ~container();
в вашем объявлении класса и устранение деструктора в файле .cpp должно решить вашу проблему.