0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Виртуальная функция и возврат объекта класса25.05.2015, 18:25. Показов 1978. Ответов 11
Метки нет Все метки)
(
Доброго времени суток! Столкнулся с проблемой. Есть переопределенный оператор умножения в родительском классе.
Кликните здесь для просмотра всего текста
И вот тут остается (CComplex& b) и как с ним быть, я не знаю. Пример использования оператора:
0
|
25.05.2015, 18:25 | |
Ответы с готовыми решениями:
11
Возврат объекта класса из функции Возврат объекта определенного класса в методе через условие
|
16 / 16 / 6
Регистрация: 03.11.2014
Сообщений: 72
|
|
26.05.2015, 07:32 | 2 |
А разве возвращаемые значения не должны быть одинаковыми?Т. е. одного типа?причем тип возвращаемого значения должен быть указателем на базовый класс
Если тип возвращаемого значения отличается то получается что у каждого класса будет своя перегрузка оператора умножения и адрес этого оператора не будет храниться в массиве указателей виртуальных функций
0
|
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
|
27.05.2015, 21:27 [ТС] | 3 |
Возможно. Я немного запутался. Но если оставлять базовый, то компилятор ругается.
0
|
19410 / 10029 / 2443
Регистрация: 30.01.2014
Сообщений: 17,682
|
|
27.05.2015, 21:40 | 4 |
Если типы ковариантны (а в твоем случае это так), то типы в возвращаемом значении могут быть разные.
Ты делаешь странные вещи, поэтому не срастается оно. Это повод задуматься над правильностью подхода в целом. Опиши задачу целиком. Почему было принято решение делать оператор виртуальным? Какая архитектурная проблема или вопрос описываются этим кодом?
0
|
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
|
27.05.2015, 21:58 [ТС] | 5 |
Задача умножать комплексные числа. Они могут задаваться действительной и мнимой частью и так же модулем и фазой. Методы умножения различаются. Можно сделать две разные функции, но подумал, что так будет лучше.
0
|
19410 / 10029 / 2443
Регистрация: 30.01.2014
Сообщений: 17,682
|
||||||
27.05.2015, 23:57 | 6 | |||||
Лучше сделать две разные функции, а вместо наследования лучше использовать шаблон с параметром-политикой способа задания числа. Перегрузка - это тоже вид полиморфизма (ad hoc).
Можно конечно и твою идею оставить, но, в этом случае, необоснованно усложняется реализация. Для этого потребуется использовать мощный механизм двойной диспетчеризации, реализация обвяза становится сложнее изначальной идеи в задаче. Именно поэтому продолжение развития архитектуры в этом направлении - неверно. Но я все-таки покажу пример: Кликните здесь для просмотра всего текста
1
|
16 / 16 / 6
Регистрация: 03.11.2014
Сообщений: 72
|
|
28.05.2015, 07:55 | 7 |
Я понимаю что наследники нужны лишь потому что для двух форматов комплексного числа в конструкторе используется два параметра типа double. Что мешает использовать только один класс так как было бы ннепонятно эти два параметра задают модуль и фазу или величины вещественной и мнимой частей числа. И если я прав то можно данные поместить в базовый класс и хранить их в одном из двух форматов а в одном наследнике у которого совпадает формат ничего не делать а у другого сделать перевод из одного формата в другой а оператор умножения будет простым методом базового класса и будет принимать и возвращать указатель на базовый класс
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
28.05.2015, 10:38 | 8 |
зачем наследование?)
2 конструктора, один из мнимой и дейсвительной части создает объект, другой из амплитуды и фазы, а в классе хранить их в одном из вариантов(т.е или x,y или a,phi)
0
|
16 / 16 / 6
Регистрация: 03.11.2014
Сообщений: 72
|
|
28.05.2015, 11:52 | 9 |
А как ты отличишь в каком формате вводится число?В обоих случаях два параметра будут типа double так как модуль фаза вещественная и мнимая часть могут быть нецелыми
0
|
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
|
28.05.2015, 12:01 [ТС] | 10 |
aLarman, да, скорей всего так и сделаю, зачем-то стал усложнять задание)
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||||||||||
28.05.2015, 12:03 | 11 | ||||||||||
1)передать 3им параметром
предположим данные в классе хранятся в ввиде x,y тогда 2 метода
1
|
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
|
28.05.2015, 12:03 [ТС] | 12 |
Cookie Monster , потом создается форма, на ней можно поставить чекбоксы и указывать, в каком формате вводится
0
|
28.05.2015, 12:03 | ||||||
Помогаю со студенческими работами здесь
12
Функция вне класса для передачи функции объекта Вызвать процедуру\функцию из другого объекта\класса. Из одного класса\объекта сделать два Создание объекта в функции и возврат объекта из нее Чистая виртуальная функция функция не имеет оператора переопределения
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
![]() |
Новые блоги и статьи
![]() |
||||
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
|
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
|
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
|
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
|
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
|
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
|
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH
1. поймать путь через вывод $(pwd)
2. более правильно - на основе realpath (см. скриншот)
|
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
|
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
|
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
run.dev 13.03.2025
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка. . .
|