![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
C'hoosen++ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 21.1.2004 Репутация: нет Всего: нет |
Примерчик:
Так вот дружественные функции перегрузки двух операций в Buildere не работают. Компилятор пишет типа: E2015 Ambiguity between 'distance' and 'std::distance<ForwardIterator>(ForwardIterator,ForwardIterator)' . Почему? Хотя в VC++ все работает! |
|||
|
||||
FreshMeat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 30.1.2004 Репутация: нет Всего: нет |
Cоздается впечатление что ты привел не весь код необходимый для воспроизведения ошибки.
Ошибка, похоже возникает, из-за того, что компилятор не может определить который из distance ему использовать - твой или определенный в пространстве имен std... причем компилятор ругается вовсе не дружественные ф-ии, а на конструктор с двумя аргументами... Потребуется явно определить в коде использующем distance, что именно надо сделать: сконструировать твой объект или вызвать ф-ю из пространства имен std... ПС. Я там понимаю, код отвечает за хранение расстояния, причем должен уметь преобразовывать дистанцию между различные системы измерений... Небольшой комментарий. Можно иметь только одно свойство в классе для хранения значения, допустим, в системе Си и переводить его по требованию в любую другую, таким образом избавиться от лишнего поля и его модификации в каждом методе - получается более читаемый код с потенциально меньшим количеством ошибок (можно забыть модифицировать одно из свойств в каком-либо методе) Да, не забудь определить оператор присваивания И конструкторы (по крайней мере с одним аргументом), лучше делать explicit |
|||
|
||||
C'hoosen++ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 21.1.2004 Репутация: нет Всего: нет |
То что ошибка в аргументах функций - это я и сам знаю (уж английским вла-
дею нормально)! Если тебя волнует остаток кода, так вот он:
И именно ошибка с разрешением пространства std. Но суть вопроса в том, что на VC++ все работате, а на Buildere нет. Это сообщение отредактировал(а) C'hoosen++ - 10.2.2004, 21:51 |
|||
|
||||
FreshMeat@Home |
|
||||||
Unregistered |
О! То, чего не хватало...
Тестируем...
так что компиляторы на редкость единодушны ![]() Лечится следующим образом
Что касается твоей ошибки, то как я понимаю, она воспроизводится на шестой студии (дома проверить не могу - ее просто нет). Объясняется слабым соблюдением стандарта компилятором. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |