Я уже искал SO и Google, я не объявляю одну и ту же переменную в двух местах, и при этом я не добавляю что-то странным образом ... что я знаю Метод вставки должен работать нормально, это заранее написанный метод (я думаю, это тоже может быть неправильно .. смеется). Это ошибка, которую я получаю.
Ошибка:
error C2872: 'range_error' : ambiguous symbol
........ while compiling class template member function 'Error_code List<List_entry>::insert(int,const List_entry &)'
Для меня метод вставки выглядит хорошо, я не вижу проблем с переменной позиции, которая сравнивается с 0 или счетчиком, который объявлен как 0 в конструкторе для возврата range_error.
Метод вставки:
template <class List_entry>
Error_code List<List_entry>::insert(int position, const List_entry &x){
Node<List_entry> *new_node, *following, *preceding;
if(position < 0 || position > count){
return range_error;
}
if(position == 0){
if(count == 0) following = nullptr;
else {
set_position(0);
following = current;
}
preceding = nullptr;
}
else {
set_position(position - 1);
preceding = current;
following = preceding->next;
}
new_node = new Node<List_entry>(x, preceding, following);
if(new_node == nullptr) return overflow;
if(preceding != nullptr) preceding->next = new_node;
if(following != nullptr) following->back = new_node;
current = new_node;
current_position = position;
count++;
return success;
}
Может быть проблема в том, что у меня нет реализации перегруженного оператора =?
Весь код здесь: pastie.org / 1258159