|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.07.2009, 16:02 | #1 |
Новичок
Джуниор
Регистрация: 13.07.2009
Сообщений: 4
|
Функции операторов
Доброго времени суток! Меня интересует следующий вопрос.
В одной книжке написано примерно так: Если в классе есть конструктор и функция оператора: Код:
Код:
В С++ Builder 6 создаю такой класс: Код:
Код:
Если компилятор принудительно заставить преобразовать 3 в CNumber: Код:
Код:
1. Я что-то непонимаю или где-то ошибаюсь 2. Автор книги допустил ошибку 3. Или в разных версиях компилятора данная ситуация обрабатывается по разному. PS Автор книги использует RHIDE и Visual Studio. В моей Visual Studio 2005 похожая ситуация тоже не компиляется. |
13.07.2009, 16:17 | #2 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Если вы перегружаете оператор + таким образом объект=объект+данные нужно вызвать функцию в таком виде
Код:
Код:
Советую вам книгу Г.Шилдта "Самоучитель С++", там подробно описана перегрузка операторов. Последний раз редактировалось profi; 13.07.2009 в 16:20. |
13.07.2009, 16:28 | #3 |
Новичок
Джуниор
Регистрация: 13.07.2009
Сообщений: 4
|
Ну насчет глобальной функции оператора + я знаю.
В данном случае порядок операндов неважен но я хочу написать класс для работы со строками, там порядок важен и там у меня несколько конструкторов для разных типов, нехочется писать есчо несколько функций оператора для всех вариантов комбинации типов. Понимаю идея глупая, но всё же. |
13.07.2009, 16:33 | #4 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Хм... тогда вам настоятельно рекоменду пользоваться дружественными функциями так
Код:
Код:
|
13.07.2009, 16:40 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
А если написать не: n1 = 3 + n2;
а: n1 = n2 + 3; не заработает случаем? |
13.07.2009, 17:42 | #6 |
Новичок
Джуниор
Регистрация: 13.07.2009
Сообщений: 4
|
Класс для работы со строками наподобие AnsiString, только использующий Unicode (wchar_t вместо char).
Вот чего мне удалось добится: Код:
Но если в самом начале вместо UniString будет любой другой тип, то программа не скомпилируется. Например такой код выдаст ошибку: Код:
|
13.07.2009, 17:47 | #7 |
Новичок
Джуниор
Регистрация: 13.07.2009
Сообщений: 4
|
|
13.07.2009, 18:04 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Значит надо писать friend'а, у которого int первый
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операторов (С++) | Перчитель | Помощь студентам | 1 | 03.12.2008 18:46 |
Значение операторов [ и ] | Ivan_32 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 30.11.2008 15:50 |
Перегрузка операторов, Организация перегрузки операторов | chagin_yav | Помощь студентам | 2 | 12.05.2008 09:15 |
Оптимизировать перегрузку операторов | Иллидан | Общие вопросы C/C++ | 14 | 24.04.2008 11:18 |
Несовместимость двух операторов | August550 | Помощь студентам | 16 | 23.04.2008 21:30 |