|
║XLR8║
|
||||||||||||||||||||||||||
STL std::set, std::pair, std::make_pair04.08.2010, 02:58. Показов 11592. Ответов 14
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы.
Собственно перейдем к нашим баранам: есть пользовательский класс (условно дерево):
1> c:\program files\microsoft visual studio 9.0\vc\include\utility(87) : error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const test::tree' (or there is no acceptable conversion) 1> e:\work\проект nautilus\test.hpp(38): could be 'bool test::tree::operator <(test::tree)' Перейдя по первой ссылку получаем следующий код из хедера utility:
По поводу второй строки: у меня классы расположены в пространстве имен "test" и оформлены в виде:
Вот только в чем проблема не понимаю а ошибки сами по себе не деваются.
0
|
||||||||||||||||||||||||||
| 04.08.2010, 02:58 | |
|
Ответы с готовыми решениями:
14
Стандартный поток и STL (std::copy to std::cout) Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri |
|
Maniac
|
|||||||||||
| 04.08.2010, 04:06 | |||||||||||
|
outoftime, Приведи полностью не рабочий пример кода.. ( здесь так не угадаешь.. )
ЗЫ.. Везде где можно используй ссылку на константу ( или как там по умному (не помню просто) ) Тооесть вместо этого
1
|
|||||||||||
|
║XLR8║
|
||||||
| 04.08.2010, 04:13 [ТС] | ||||||
|
Теперь выбивает вот такое:
error C2662: 'test::tree::getAge' : cannot convert 'this' pointer from 'const test::tree' to 'test::tree &' Код в полном обьеме.
0
|
||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|
| 04.08.2010, 04:38 | |
|
1
|
|
|
║XLR8║
|
||||||
| 04.08.2010, 04:52 [ТС] | ||||||
|
ISergey, меня не волнует что будет в мэйне, моя задача - хэдер.
вот что поменял:
1>e:\work\проект nautilus\test.hpp(68) : error C2511: 'bool test::tree::operator ==(const test::tree &)' : overloaded member function not found in 'test::tree' 1> e:\work\проект nautilus\test.hpp(17) : see declaration of 'test::tree' Добавлено через 1 минуту Если не сложно подскажите хотя-бы куда рыть.
0
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 04.08.2010, 13:09 | |
|
outoftime, в прототипе у вас функция константная. В определении нет.
Т.е. скорее всего так: bool tree::operator == (const tree &a) const И далее по списку.
1
|
|
|
║XLR8║
|
|||||||||||
| 05.08.2010, 00:47 [ТС] | |||||||||||
|
Значить подвожу краткий итог, что-бы не надо было читать все предыдущие посты кроме первого:
1. если переписать
error C2662: 'test::tree::getHeight' : cannot convert 'this' pointer from 'const test::tree' to 'test::tree &' 2. если переписать
error C2511: 'bool test::tree::operator ==(const test::tree &)' : overloaded member function not found in 'test::tree' Кто-то знает хотя-бы куда копать? Добавлено через 6 часов 48 минут У кого-то есть хотя-бы какие-то предположения в чем может быть ошибка, а главное варианты решения?
0
|
|||||||||||
|
|
|||||||||||
| 05.08.2010, 10:03 | |||||||||||
|
вот исправленный класс tree. ошибок море было. сейчас еще с оставшимся лесом разберусь.
да, кстати, у тебя есть две переменные статические в классе. они нигде не были определены. я присвоил им значение по 5.0. в коде найдешь - заменишь на свои.
вот переделанный лес. но честно. я бы на вашем месте переписал код еще раз, только медленно, вдумчиво, с чувством, с толком, с расстановкой. потому сейчас сложно предположить, что из этого выйдет.
1
|
|||||||||||
|
|
|||||||||||||||||||||||||||
| 05.08.2010, 13:04 | |||||||||||||||||||||||||||
|
если метод не будет изменять данные класса, определяйте его как const. если аргумент метода не будет изменяться в методе - определяйте его как const. теперь пройдемся по вашему коду. конструктор класса
на этом же месте, почему аргумент является объектом, а не ссылкой на объект? это лишнее копирование. раз аргумент у нас константный, то изменяться он не может, следовательно можно смело передавать строку по ссылке, а не по значению. в итоге применив все замечания мы получаем нормальный прототип конструктора:
ну и две неинициализированные статические переменные. кстати совершенно незачем инициализировать их в конструкторе. я забыл совсем про этот момент то есть заметил только сейчас. инициализируйте их вот так, только значения свои поставьте:
![]() в классе леса в принципе все те же самые косяки, за исключением одного метода. в методе getTreeList пришлось сделать const_cast. чтобы указатель все таки скопировался. не знаю зачем кстати этот метод. с указателями в С++ лучше не баловаться.
0
|
|||||||||||||||||||||||||||
|
║XLR8║
|
|||||||||||
| 05.08.2010, 15:25 [ТС] | |||||||||||
|
Мне пришлось присваивать константный идентификатор еще здесь:
e:\work\проект nautilus\new\test.hpp(150) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::_Tree<_Traits>::const_iterator' (or there is no acceptable conversion) with [ _Traits=std::_Tset_traits<std::pair<test ::tree,std::pair<int,int>>,std::less<std ::pair<test::tree,std::pair<int,int>>>,s td::allocator<std::pair<test::tree,std:: pair<int,int>>>,false> ] c:\program files\microsoft visual studio 9.0\vc\include\xtree(498): could be 'std::_Tree<_Traits>::iterator &std::_Tree<_Traits>::iterator::opera tor =(const std::_Tree<_Traits>::iterator &)' with [ _Traits=std::_Tset_traits<std::pair<test ::tree,std::pair<int,int>>,std::less<std ::pair<test::tree,std::pair<int,int>>>,s td::allocator<std::pair<test::tree,std:: pair<int,int>>>,false> ] while trying to match the argument list '(std::_Tree<_Traits>::iterator, std::_Tree<_Traits>::const_iterator)' with [ _Traits=std::_Tset_traits<std::pair<test ::tree,std::pair<int,int>>,std::less<std ::pair<test::tree,std::pair<int,int>>>,s td::allocator<std::pair<test::tree,std:: pair<int,int>>>,false> ]
0
|
|||||||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||
| 05.08.2010, 17:04 | ||||||
|
outoftime, я вот тут что подумал... а не проще в класс tree включить координаты, в которых дерево посажено, а то таскать вот такую
0
|
||||||
|
║XLR8║
|
||||||||||||||||
| 05.08.2010, 18:01 [ТС] | ||||||||||||||||
|
Это не совсем то что надо, так как деревья могут расти даже в пустыни, где нет лесов.
Добавлено через 22 минуты
Добавлено через 1 минуту К слову
Добавлено через 15 минут http://duramecho.com/ComputerI... Const.html - Вот нашел внятный рассказ о том, где и когда использовать идентификатор const.
0
|
||||||||||||||||
| 05.08.2010, 18:01 | |
|
Помогаю со студенческими работами здесь
15
Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|