Я написал эту функцию на C ++ как часть более крупной программы:
Object Single_list<Object>::pop_front() {
//Single_node<Object> *tmp_front;
//Object hold;
if (empty()) {
throw underflow();
}
Single_node<Object> first_node = front();
Single_node<Object> *ptr = list_head;
list_head = list_head->next();
delete ptr;
return first_node.retrieve();
}
Однако, когда я пытаюсь использовать эту функцию, я получаю следующее сообщение:
ПРЕДУПРЕЖДЕНИЕ: вызов delete дважды в одной и той же ячейке памяти: 0x100100160
Я действительно сбит с толку, я не удаляю указатель (если предположить, что это является причиной проблемы?) Дважды.
Любой совет будет оценен.
Как и было запрошено, вот функция конструктора и получения для Single_Node, хотя я не уверен, насколько это полезно для ошибки, связанной с удалением, которое я получаю:
template <typename Object>
Single_node<Object>::Single_node( const Object &e, Single_node<Object> *n ):element( e ), next_node( n )
{
// empty constructor
}
template <typename Object>
Object Single_node<Object>::retrieve() const
{
return element;
}
template <typename Object>
Single_node<Object> *Single_node<Object>::next() const
{
return next_node;
}