|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2010, 17:09 | #1 |
Пользователь
Регистрация: 26.06.2008
Сообщений: 86
|
Mножественное наследование
Здраствуйте. Столкнулся со следующей проблемой. У меня есть 4 класы: человек (person) ,студент - student,работник - employer, студент-работник - student_employer. Клас студент-работник наследует классы студент и работник. Классы студент и работник наследуют класс человек, что приводит к тому, что у меня в класе студент-работник два раза дублируются поля класса человек. Как мне убрать дублирование? Вот мой код:
PHP код:
P.S. Также у меня нет на форуме кнопки для подсветки кода С++. Буду благодарен за ответы и обьяснения.
TerMinAdoOR
|
19.04.2010, 18:31 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
сначала по твоему коду:
Код:
почему вводится 7 полей думаю понятно. т.к ты наследуешься от Person виртуально, классы Student и Employer имеют общую копию Person. при вводе Student_Employer сначала вызываешь заполнение Student (который вызывает заполнение Person), потом вызываешь заполнение Employer (который повторно вызывает заполнение Person). по-хорошему я бы отказался от дружественных функций и нисходящего преобразования в пользу виртуальных функций. и кстати, для нисходящего преобразования лучше используй static_cast. если не менять особо код я вижу один выход: Код:
ну либо в каждом классе сделать свой ввод
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 19.04.2010 в 18:42. |
19.04.2010, 18:54 | #3 |
Пользователь
Регистрация: 26.06.2008
Сообщений: 86
|
Можешь поподробней как сдеать в каждом классе свой ввод без дублирования?
€
TerMinAdoOR
|
19.04.2010, 18:57 | #4 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Наследование | Сергей089 | Помощь студентам | 6 | 07.02.2010 12:04 |
Наследование | lolopolosko | Помощь студентам | 1 | 21.11.2009 17:17 |
Наследование на C++ | dziga1989 | Помощь студентам | 5 | 22.10.2009 11:25 |
Наследование | z3rg | Общие вопросы C/C++ | 9 | 30.04.2009 20:43 |
Наследование | Кирилл13 | Общие вопросы C/C++ | 1 | 11.11.2008 14:47 |