![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Gunslinger |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Привет. Преждевременно закрыл тему про перегрузку сравнения. Только сейчас добрался до сравнения.
В мейне пишу:
Перегрузил ==, пишет тоже самое. В очередной раз немного хедера:
Реализация:
|
||||||
|
|||||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Как-то не вяжется. Вас просят для Address, а вы для MyCells реализовываете. Добавлено через 1 минуту и 15 секунд Тогда уж с1==с2 сравнивайте. |
|||
|
||||
| Gunslinger |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
пишет [C++ Error] Unit1.cpp(45): E2093 'operator==' not implemented in type 'MyCells' for arguments of the same type
Так я про это и писал.
Так разве? Это же передача самостоятельного объекта, а не части класса? А объект структуры описан в private. Это сообщение отредактировал(а) Gunslinger - 16.10.2008, 08:55 |
||||
|
|||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Что это такое? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Это сообщение отредактировал(а) bsa - 16.10.2008, 11:55 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
oчепятка
Это сообщение отредактировал(а) mes - 16.10.2008, 12:15 |
|||
|
||||
| Gunslinger |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
[C++ Error] MyCells.h(28): E2093 'operator==' not implemented in type 'Address' for arguments of the same type Я непонял
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
оператор определен для сравнения двух объектов класса Address , а что Вы ему туда передатите эта Ваша задача - для функции безразлично лишь бы было право доступа(поэрому и объявлена френдом) Добавлено через 3 минуты и 10 секунд оператор сравнения объекта типа класса в котором он определен с объектом типа указанного в скобках (в данном случае типы совпадают) Добавлено через 5 минут и 13 секунд
такое у Вас на код который привел bsa ? |
|||
|
||||
| Gunslinger |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
да.
в коде:
Т.е. я передаю ему ссылку на адрес, по которому лежит объект класса. Далее перемещаюсь по пространству объекта в поисках структуры addr? Это сообщение отредактировал(а) Gunslinger - 16.10.2008, 15:03 |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
забыто const
можно представить как if (c1.operator==(c2)).. Это сообщение отредактировал(а) mes - 16.10.2008, 15:11 |
|||
|
||||
| Gunslinger |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Заработало.
строка пашет. Только я никак не воткну в эту:
Со сравнением адресов представляю: if(struct1==struct2), но с этой... Что с чем сравнивается? Почему без нее прога не компилится? Непонятное тело:
что мне теперь править?... блин. Это сообщение отредактировал(а) Gunslinger - 16.10.2008, 15:52 |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
мне кажется вы упустили что неявно передается указатель на себя, то есть код в "явном" виде выглядит так
Добавлено через 1 минуту и 52 секунды если заработало, то чего править? Добавлено через 3 минуты и 31 секунду Потому что компилятор не мог догадаться как провести сравнение.. Это сообщение отредактировал(а) mes - 16.10.2008, 16:03 |
||||
|
|||||
| Gunslinger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: 1 Всего: 3 |
Тогда понятно! Только по вашим словам я не понял: this - он передается по умолчанию всегда (исправленный по этому коду вариант навыдавал ошибок)? Как будто читал про указатель на себя. У Рамбо вроде, что каждый объект знает, чей он или вроде того... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Код приведенный в предыдущем топике нужен для понимания процесса - добавлять this к коду не нужно - это делает компилятор.
ага, для каждого сравнения своя функция . |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |