![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Доброго дня!
Есть класс. У него должна быть одна из двух версий operator* с одинаковыми параметрами, которые различаются только возвращаемыми значениями. Нужно сделать так, чтобы в зависимости от переданного шаблонного параметра была реализована та, или иная версия operator*. Код должен выглядить примерно так:
Т.е, ключевой момент в том, чтобы использовать ветвление по параметру шаблона, которое касается объявления, как по аналогии с #ifndef....#define....#endif |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 3 Всего: 8 |
Перегрузка возможна только с разными параметрами, а не с разными возвращаемыми значениями.
|
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
Речь здесь идёт не о перегрузке, а о реализации одной из двух версий operator* в зависимости от переданного шаблонного параметра.
Это сообщение отредактировал(а) ANTON_AL - 3.7.2007, 13:44 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Это сообщение отредактировал(а) MAKCim - 3.7.2007, 14:13 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
ANTON_AL, специализация шаблонного класса тебе поможет. а вообще лучше меняй дизайн.
|
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 2 Всего: 14 |
MAKCim, что есть Behaviour?
Вопрос снят, простите за невнимательность. Это сообщение отредактировал(а) korbian - 3.7.2007, 15:21 -------------------- korbian © |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
korbian,
откуда я знаю? спроси у ANTON_AL -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 2 Всего: 14 |
См. выше редакцию.
-------------------- korbian © |
|||
|
||||
| ANTON_AL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 292 Регистрация: 27.1.2007 Репутация: нет Всего: нет |
MAKCim, Спасибо за пример. Хороший приём.
Этот класс, для которого нужна одна из двух версий operator* представляет собой алгоритмическое число с фиксированной точкой, которое будет использоваться в разрабатываемой библиотеке алгоритмов. При умножении двух чисел, если мы хотим сохранить данные и избежать переполнения, нужно результат хранить в числе, разрядность которого в два раза больше, т.е. WORD*WORD = DWORD В одних алгоритмах требуется сохранять данные ( т.е. WORD*WORD = DWORD ), в других нет ( WORD*WORD = WORD ). А класс этого числа будет для всех алгоритмов один. Вот в этом и была проблема с реализацией одного из двух operator* для числа, в зависимости от его типа поведения ( Behavior: защищённое от переполнения/ не защищённое) Проблему решил, просто сделав switch в коде. Геморно, но пока работает. Это сообщение отредактировал(а) ANTON_AL - 3.7.2007, 20:05 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |