8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 88
|
||||||
1 | ||||||
Переопределение метода базового класса в производном07.11.2019, 05:37. Показов 6317. Ответов 12
В базовом классе Base метод CreateObjMC создаёт объект производного класса, а в производном классе MyClass "этот" метод переопределяется для создания объекта MyClass путём копирования объекта MyClass.
вылетает ошибка Error 1 'MyClass.CreateObjMC(MyClass)': no suitable method found to override Код: Кликните здесь для просмотра всего текста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
07.11.2019, 05:37 | |
Ответы с готовыми решениями:
12
Вызов метода базового класса игнорируя переопределенный метод в производном классе Переопределение метода базового класса Не получается вызвать Change из базового класса в производном Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода |
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 88
|
||||||
07.11.2019, 07:44 [ТС] | 3 | |||||
Ошибка возникает в переопределённом методе в производном классе, не туда коммент вставил
Добавлено через 4 минуты Toros1992, Toros1992, Переопределить метод в производном классе без аргументов, а потом его перегрузить? Добавлено через 8 минут Toros1992, Типа так?: Кликните здесь для просмотра всего текста
0
|
07.11.2019, 07:51 | 4 |
Ну да, так можно. Но только это бессмысленно.
Так как я не знаю задачу, то не могу подсказать как надо, но на 100% уверен, что не так как у вас. Суть переопределения - полиморфизм. Чтобы через ссылку на объект базового класса вызывать методы производных классов. У вас же ваш перегруженный метод будет существовать только в одном классе наследнике. Тогда переопределение вообще не нужно. И то, что у вас базовый класс что-то знает о наследнике - это очень плохо Добавлено через 1 минуту И кстати, что по вашему делает метод public MyClass CreateObjMC(MyClass obj) ?
1
|
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 88
|
|
07.11.2019, 07:59 [ТС] | 5 |
Toros1992, могу написать условие целиком
Добавлено через 5 минут Текст задачи полностью: "Напишите программу, в которой есть базовый класс с открытым текстовым полем. На его основе создаётся производный класс с дополнительным открытым символьным полем. Опишите в базовом классе виртуальный метод, который при вызове создаёт и возвращает результатом объект производного класса. Переопределите в производном классе этот метод так, чтобы он создавал и возвращал копию объекта, из которого вызывается." Добавлено через 2 минуты Я думал копирует значение, но судя по появившемуся вопросу видимо всё же по ссылке)
0
|
![]() 16745 / 12496 / 3285
Регистрация: 17.09.2011
Сообщений: 20,727
|
|
07.11.2019, 08:51 | 6 |
Перегруженный метод должен возвращать копию экземпляра, из которого он вызывается, а не копию передаваемого в него экземпляра.
Потому выбросьте перегрузку с параметром, а из переопределенного метода возвращайте новый экземпляр MyClass с теми же значениями полей, что у текущего.
1
|
Модератор
![]() |
|||||||||||
07.11.2019, 09:06 | 7 | ||||||||||
Шрайн, вам по задаче нужно задать метод возвращающий производный класс, но в базовом типе.
Так, например, можно задать метод копирования Базовый класс
1
|
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 88
|
||||||
08.11.2019, 08:32 [ТС] | 9 | |||||
Есть у меня мысль, что создание объекта базового класса не имеет смысла,
можно ли из объекта производного класса вызвать метод базового класса, если он, как в данном случае, переопределён? Кликните здесь для просмотра всего текста
0
|
Модератор
![]() |
|||||||||||||||||||||
08.11.2019, 09:28 | 10 | ||||||||||||||||||||
![]() Базовый класс ничего не знает о своих наследниках. И создание в базовом классе экземпляров производного класса действительно не должно быть. Пример виртуального метода и его переопределения я показал выше. ![]() Но зачем? Иногда это имеет смысл. Допустим, в базовом есть метод
Добавлено через 19 минут Допустим, в общем случае, производный класс не может знать, как сделать полную копию базового типа. Для этого надо воспользоваться методом базового типа
А в производном так
1
|
8 / 5 / 3
Регистрация: 19.09.2019
Сообщений: 88
|
|
08.11.2019, 09:46 [ТС] | 11 |
Здесь я имел в виду, что нет практического смысла создавать объект с полями только базового класса.
Согласен, но по заданию требуется создать объект производного из метода базового, а затем в производном переопределить метод базового класса для копирования объекта производного производного класса в новый объект производного класса.
0
|
1518 / 443 / 125
Регистрация: 09.01.2018
Сообщений: 1,024
|
|||||||||||
08.11.2019, 10:38 | 12 | ||||||||||
1
|
Модератор
![]() |
|
08.11.2019, 10:58 | 13 |
![]() А имеется ввиду такая реализация как я показал. То есть метод Copy определен в базовом классе. Но для производного класса он возвращает экземпляр производного, но в типе базового. Создать в базовом копию экземпляра в производном типе, в принципе, не возможно. Так как производных может быть множество типов и в каком из них создавать копию?
1
|
08.11.2019, 10:58 | |
Помогаю со студенческими работами здесь
13
Использование метода из наследованного класса к объекту базового класса Перекрытие метода базового класса Вызов метода базового класса Вызов метода из базового класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |