![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]()
Вопрос такой. В общем понадобилась вот такая конструкция:
Код:
Или необходимо описать get_health() и change_health() как virtual? А потом переопределять их в потомках?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
работать не будет, да и самому разве не очевидно, что health (и всё, что с ним связано) надо поместить в class Man, тогда и Player и Enemy его унаследуют, и дублирование пропадёт.
А virtual понадобится только тогда, когда появится некоторый объект, у которго change_health() будет работать по-другому.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]()
Т.е. health и пр. перенести в секцию public класса man и наследовать?
P.S. А если мне необходимо будет обращатся к методам, которые не являются методами класса Man? Тогда надо будет определить класс Man как абстрактный и добавить в него чисто виртуальных методов? ![]() P.P.S. А если я создам 2 чисто виртуальных метода get_bullets() и get_knifes(). Причем get_bullets() - будет использоваться в классе Player,но не будет использоваться в классе Enemy, а get_knifes() с точностью да наоборот? Что делать с "ненужными генами" ?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. Последний раз редактировалось MooNDeaR; 12.08.2011 в 00:34. |
![]() |
![]() |
![]() |
#4 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
health в private, а get_health/change_health в public. Man должен содержать в себе всё общее, что имеют между собой классы Player и Enemy.
Цитата:
А вообще, не получится определить только один из двух нереализованных (чисто виртуальных) методов. Для создания объекта класса, должны быть определены все методы, объявленные в нём. |
|
![]() |
![]() |
![]() |
#5 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]()
Эт я знаю. Ну я тогда просто возвращаю ноль, ибо их действительно у него нету. В принципе я разобрался. Спасибо. Только пихать health в private нельзя. Иначе при создании конструктора для класса Player вида:
Код:
![]()
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 12.08.2011 в 01:00. Причина: public забыл |
![]() |
![]() |
![]() |
#7 |
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]()
Хммммм
![]() ![]()
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
еще можно сделать такое:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#9 | |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
![]() Цитата:
Можно переменную health в секцию protected и она будут использоваться наследниками. |
|
![]() |
![]() |
![]() |
#10 | ||
В стагнации
Участник клуба
Регистрация: 29.07.2011
Сообщений: 1,303
|
![]() Цитата:
Цитата:
![]() ![]()
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание. Последний раз редактировалось MooNDeaR; 12.08.2011 в 12:28. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Linq to Sql и наследование классов | don_castello | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 1 | 15.06.2011 23:45 |
создание и наследование классов в С# | Pavellavr | Помощь студентам | 2 | 25.03.2011 20:37 |
Наследование классов | Serjuk | Общие вопросы C/C++ | 9 | 11.04.2010 16:25 |
наследование классов | Dimarik | Общие вопросы C/C++ | 15 | 02.07.2009 20:00 |