![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|||||||||||||||||||
|
Неактивный пользователь
Регистрация: 14.12.2006
Сообщений: 5
Репутация: 1
|
//error Error 1 error C2440: 'initializing' : cannot convert from 'std::_Vector_const_iterator<_Ty,_Alloc>' to 'std::_Vector_iterator<_Ty,_Alloc>' e:\my documents\visual studio 2005\projects\toto\toto\engine.cpp 21 Вопрос: почему в VS2005 вектор возвращает константный итератор, teams.begin(), тогда как bds2006 делает всё правильно. |
|||||||||||||||||||
|
|
|
| Реклама: | стоимость сервера | лайф арена одинцово официальный сайт - RedKassa.ru | Аддитивная 3D печать | катышев сергей кинотв | круиз на теплоходе казань-москва-казань |
|
|
#2
|
|
А как это вообще может работать?
Имеется ввиду последний аргумент, который имеет тип bool boost::bind(&Team::name, _1) == name
__________________
Хочешь быть счастливым - будь им! (с) Козьма Прутков. Ностальгия — это попытка сравнить наихудшее из настоящего с наилучшим из прошлого. (c) ? |
|
|
|
|
|
|
#3
|
|||||||||||||||||||
|
Неактивный пользователь
Регистрация: 14.12.2006
Сообщений: 5
Репутация: 1
|
из msdn
Как оказалось до версии буста 1.33 такое было невозможно из-за того, что небылыли перегружены операторы сравнения, отрицания и т.д. |
|||||||||||||||||||
|
|
|
|
|
#4
|
|||||||||||||||||||||||
_Pred User-defined predicate function object that defines the condition to be satisfied by the element being searched for. A predicate takes single argument and returns true or false. Действительно функция-предикат должна возвращать значение true или false. Но в приведенном выше коде, третьим параметром является адрес временной переменной (результата сравнения функции, сконструированной boost::bind и переменной name). Отсюда следствие, что если это компилируется в BSD, то компилятор преобразовывает тип "адрес булевской переменной" к адресу якобы функции-предиката. Вот это и непонятно. К тому же изначальный вопрос: "почему в VS2005 вектор возвращает константный итератор, teams.begin(), тогда как bds2006 делает всё правильно" вообще неясен, не может быть такой ошибки, так как реализация STL от Microsoft содержит два варианта функции begin() для вектора: первая возвращает просто итератор, вторая - константный.
__________________
Хочешь быть счастливым - будь им! (с) Козьма Прутков. Ностальгия — это попытка сравнить наихудшее из настоящего с наилучшим из прошлого. (c) ? |
||||||||||||||||||||||||
|
|
|
|
|
#5
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 14.12.2006
Сообщений: 5
Репутация: 1
|
На сколько я понял. boost::bind(&Team::name, _1) == name bind возвращает функциональный объект с перегруженным оператором ==, вот его адрес и передаётся в качестве предиката.
Насчёт этих итераторов я в курсе. Не поверишь, но даже вот такой код std::vector<Team>::iterator first = teams.begin() не хочет выполнятся, появляется эта ошибка. Хотя в другом cpp этого же проекта всё прекрасно. Какие-то странности в MSVS2005. Но вот как это победить? |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#6
|
|||||||||||||||||||
|
Неактивный пользователь
Регистрация: 14.12.2006
Сообщений: 5
Репутация: 1
|
Проблема решена. Совсем забыл, что константность функции подразумевает запрет модификации this. ЗЫ: А на bds я видимо забыл установить константность. ![]() |
|||||||||||||||||||
|
|
|
|
|
#7
|
|||||||||||||||||||||||
Спасибо, не знал... Собственно, я с бустом пока не работал... :7:
__________________
Хочешь быть счастливым - будь им! (с) Козьма Прутков. Ностальгия — это попытка сравнить наихудшее из настоящего с наилучшим из прошлого. (c) ? |
||||||||||||||||||||||||
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| сообщение об ошибке “UdiskV . Run-time error ‘75’: Path/File access error. OK | stills | Скорая помощь | 3 | 10.01.2009 11:22 |
| TeeChart for QuickReport 4 in BDS2006 | KVA21 | Компоненты | 1 | 25.10.2008 21:09 |
| Status Error: Data error | Witaly | Архив | 2 | 26.02.2008 12:32 |
| ищется Report builder + Pragnaan Export Devices для BDS2006 | BenGun | Компоненты | 0 | 06.12.2007 10:29 |
| Как собрать дистрибутив BDS2006 из 4х дисков в 1 DVD | SCUTUM | Программирование | 5 | 16.11.2006 20:02 |
|
|