| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > error C2679 и error C2678 помогите исправить |
| Автор: lavs 10.2.2015, 01:15 | ||||||||
Помогите исправить ошибку при компиляции ругается на строки
и
showIter - это переменная, объявленная так:
CCompareFing это структура:
Вылазят ошибки типа: Ошибка 1 error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "int" (или приемлемое преобразование отсутствует) c:\users\толик\desktop\figneranalyser\fingeranalyserdlg.cpp 252 1 FingerAnalyser Ошибка 2 error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "std::_List_iterator<std::_List_val<std::_List_simple_types<CCompareFing>>>" (или приемлемое преобразование отсутствует) c:\users\толик\desktop\figneranalyser\fingeranalyserdlg.cpp 440 1 FingerAnalyser 3 IntelliSense: отсутствует оператор "=", соответствующий этим операндам типы операндов: std::_List_iterator<std::_List_val<std::_List_simple_types<CCompareFing>>> = int c:\Users\Толик\Desktop\FignerAnalyser\FingerAnalyserDlg.cpp 252 12 FingerAnalyser 4 IntelliSense: отсутствует оператор "==", соответствующий этим операндам типы операндов: std::_List_iterator<std::_List_val<std::_List_simple_types<CCompareFing>>> == int c:\Users\Толик\Desktop\FignerAnalyser\FingerAnalyserDlg.cpp 440 15 FingerAnalyser |
| Автор: baldina 10.2.2015, 01:58 |
| NULL (int) не преобразуется к типу list<TCompareFing>::iterator. используйте std::list<TCompareFing>::end() |
| Автор: lavs 10.2.2015, 08:22 |
Это будет то же самое что и NULL? Добавлено через 13 минут и 43 секунды Ошибку выбивает тоже( Можно я вам скину проект вы мне поможете? |
| Автор: baldina 10.2.2015, 11:05 |
нет, конечно, иначе бы не было ошибки Добавлено через 7 минут и 59 секунд весь проект не надо, вы покажите предметную часть. например, http://ideone.com/4t5fkR при использовании stl не требуется вручную инициализировать итераторы и проверять их на конкретные значения: итератор суть обобщение указателя, абстрактная координатная структура. абсолютные координаты обычно не важны (например, адрес переменной произволен), важны относительные (например смещение от начала), попадание в диапазон и т.д. |
| Автор: lavs 10.2.2015, 22:19 |
| Вот. Файл http://ideone.com/zBj9Ui На строку 252 и 440 ошибка компилятора http://ideone.com/Q5a4p6 http://ideone.com/zhzGkC |
| Автор: baldina 11.2.2015, 11:47 | ||||||
| lavs, зачем так много не относящегося к делу текста? зачем это постить в ideone в виде непригодном для компиляции? online ide хороши для небольших модельных примеров (законченных!) тем не менее я бегло поглядел ваш код. видимо речь идет об этом:
насколько я вижу, ShowBase() переходит по данным вперед/назад, а по достижении конца(начала) должна переходить в начало(конец). Вы почти правильно все делаете, только не надо showIter присваивать 0 и сравнивать с ним. Если у вас нет compareResult, то значение showIter не имеет смысла, и поэтому не важно. Все операции над showIter должны производиться только если compareResult не 0. Насколько я вижу, это проверяется. И еще надо проинициализировать showIter как только появляется compareResult:
в целом будет что-то вроде http://ideone.com/fm9niY ЗЫ. Удобнее было бы иметь две функции - ShowPrev и ShowNext и вообще, одна функция - одна задача. типа
|
| Автор: lavs 11.2.2015, 14:10 |
| Спасибо за ответ)) |
| Автор: lavs 11.2.2015, 14:55 | ||||
| теперь еще одна проблемка при нажатии на кнопку открыть и выбора битмап появляется ошибка (скрин приложил) код кнопки
вылетает при выполнении команды
|
| Автор: baldina 11.2.2015, 15:43 |
| смотрите в отладчике, что именно в конструкторе CAnalysePicture приводит к ассерту. кстати, if здесь лишний. delete (void*)0 вполне законная операция |
| Автор: lavs 11.2.2015, 16:15 |
| baldina, благодарю, исправил) |