![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Storm_tpv |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 4.12.2006 Репутация: нет Всего: нет |
Здаствуйте!
Я вот начал изучать тему множественного наследования. и передо мной встала задача: написать след программу. Создать иерархии наследования: удочка, телескоп – телескопическая удочка. Я почитал теории, пробовал и так и сяк, но ошибка появляется. Я не знаю как бы мне изменить другие классы от udocika_teleskop хочу передать в остальные классы данные созданные этим классом. Вот что я написал. Помогите понять или исправить ошибку.
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Укажи её, мы не телепаты. И номер строки, на которую ругается компилятор. |
|||
|
||||
Storm_tpv |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 4.12.2006 Репутация: нет Всего: нет |
Не могли бы вы в майне создать переменную класса udocika_teleskop чтобы она могла бы вызывать оба класса.
вот как здесь пример. Я не понимаю как мне это повторить: class Student{ public: int mark; ... }; class Worker{ public: int salary; }; class Practicant: public Student, public Worker{ }; void PutMark(Student& s, int mark){ s.mark = mark; } void PutSalary(Worker& w, int salary){ w. salary = salary; } void main(){ Practicant p; PutMark(p,5); PutSalary(p,200); } Мне бы только в майне, остальное я описал уже. Спасибо |
|||
|
||||
Storm_tpv |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 4.12.2006 Репутация: нет Всего: нет |
Правильно я сделал?
У меня соменения, я не уверен, помогите пожалуйста.
Это сообщение отредактировал(а) Storm_tpv - 15.12.2007, 00:37 |
|||
|
||||
crazy_hand |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.12.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
ты в main вызываешь функцию getl класса udocika. Прототип:
а ты ей вторым параметром передаешь не int а объект класса udocika_teleskop. В этом и ошибка. А вообще приучайся писать с директивами препроцессора #ifndef,#define,#endif, а так же разделять интерфейс и реализацию, определяй сам класс в .h файлы - его методы в .cpp файле. И названия классов гораздо лучше смотрятся, если они написаны по-английски =) Это сообщение отредактировал(а) crazy_hand - 15.12.2007, 01:32 |
|||
|
||||
Storm_tpv |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 4.12.2006 Репутация: нет Всего: нет |
Все я понял:
По условию задания я правильно вызвал и определил? для класса udocika
а вот main
|
||||
|
|||||
crazy_hand |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 12.12.2007 Где: Санкт-Петербург Репутация: нет Всего: нет |
ну лично мне больше нравится второй вариант твой. Но в конечном счете все определяется твоими задачами и поставленными целями. Но вообще, я бы посоветовал(как меня учили и как я стараюсь писать) писать так: в базовом классе определяется 2-а метода, один открытый, а другой защищенный(виртуальный). Открытый внутри себя вызывает защищенный. Защищео нный, если нужно, в классах-потомках переопределяется.
|
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
А где у тебя там аналогия с Student, Worker, Practicant? Суть в эталонной задаче в правильном выборе из перегруженных функций. А в твоем коде я вообще не вижу перегруженных функций которые заточены под удочку и телескоп.
Короче задача непонятна ![]() --------------------
|
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: 2 Всего: 7 |
От себя добавлю, что пример выбран какой-то неудачный. ;(
(Когда применяем множественное наследование, предполагается наследование классом свойств от двух (или более) суперклассов. А удочка-телескоп, очевидно, много наследует от удочки, но как-то очень мало -- от телескопа.) --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |