0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Виртуальная функция и возврат объекта класса25.05.2015, 18:25. Показов 1965. Ответов 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
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
27.05.2015, 21:40 | 4 |
Если типы ковариантны (а в твоем случае это так), то типы в возвращаемом значении могут быть разные.
Ты делаешь странные вещи, поэтому не срастается оно. Это повод задуматься над правильностью подхода в целом. Опиши задачу целиком. Почему было принято решение делать оператор виртуальным? Какая архитектурная проблема или вопрос описываются этим кодом?
0
|
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 30
|
|
27.05.2015, 21:58 [ТС] | 5 |
Задача умножать комплексные числа. Они могут задаваться действительной и мнимой частью и так же модулем и фазой. Методы умножения различаются. Можно сделать две разные функции, но подумал, что так будет лучше.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
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 | |
28.05.2015, 12:03 | |
Помогаю со студенческими работами здесь
12
Вызвать процедуру\функцию из другого объекта\класса. Из одного класса\объекта сделать два Создание объекта в функции и возврат объекта из нее Чистая виртуальная функция функция не имеет оператора переопределения Создайте массив типа Employee и сохраните в него 3 объекта класса Employee и 3 объекта класса Manager Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование
Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
|
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы
В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
|
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире
В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
|
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике
В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
|
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование
В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
|