псевдонимы(опять этот гемор) |
Здравствуйте, гость ( Вход | Регистрация )
псевдонимы(опять этот гемор) |
voipp |
11.2.2010, 18:31
Сообщение
#1
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
объясню ситуацию на пальцах.Значит имеется operator=(classX &X).Мне нужно использовать этот оператор, вот только аргумент его X а не &X.Компилятор выдает ошибку.Что делать и почему в аналогичной ситуации - void func(classX &X), func(X) ошибки не возникает.
|
|
|
BRE |
11.2.2010, 18:46
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Попробуй так:
operator=(const classX &X) |
|
|
voipp |
12.2.2010, 11:02
Сообщение
#3
|
Участник Группа: Участник Сообщений: 116 Регистрация: 20.10.2009 Из: Msk Пользователь №: 1166 Спасибо сказали: 0 раз(а) Репутация: 0 |
спасибо за помощь.А не растолкуете теперь - почему это так?
|
|
|
Влад |
12.2.2010, 13:49
Сообщение
#4
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Приведи тестовый код и какую ошибку выдает компилятор. Каноническую форму operator=() уже тебе написал коллега BRE.
|
|
|
Iron Bug |
12.2.2010, 17:53
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
спасибо за помощь.А не растолкуете теперь - почему это так? а чего тут толковать? операторы по определению имеют ограничения на операнды: Цитата(Bjarne Stroustrup) 11.2.2 Predefined Meanings for Operators [over.predefined] Only a few assumptions are made about the meaning of a user-defined operator. In particular, operator=, operator[], operator(), and operator-> must be nonstatic member functions; this ensures that their first operands will be lvalues (§4.9.6). и оператор присвоения имеет тип ссылки на константный объект. кстати, неясно, чем не угодило обращение по ссылке вместо формального параметра? если будет просто тип class X - то он будет копироваться и передаваться через стек. а нафиг это нужно, если всё равно операнд константный? Сообщение отредактировал Iron Bug - 12.2.2010, 17:57 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 2:25 |