0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
||||||
1 | ||||||
Классы. неоднозначный уровень доступа10.11.2010, 00:55. Показов 6377. Ответов 15
Метки нет (Все метки)
Кароче, трабла такая, имеется базовый класс, от него два производных, от этих двух имеется еще один производный. для наглядности диаграмма классов.
Трабла нелепа, но и не понятна. При перегрузке оператора вывода(<<) выскакивает "неоднозначный уровень доступа" к данным первого САМОГО базового класса. Как же все-таки толково правильно сделать эту перегрузку не используя воидовский вывод того класса в перегрузке?
0
|
10.11.2010, 00:55 | |
Ответы с готовыми решениями:
15
неоднозначный уровень доступа, идентификатор не найден Уровень доступа Уровень доступа Уровень доступа к полям |
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
10.11.2010, 09:21 | 2 |
Толковое решение заключается в том, чтобы избавится от ромбовидного наследования.
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
|
10.11.2010, 09:44 [ТС] | 3 |
в том то и фишка, что именно такое наследование и нужно.
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
10.11.2010, 14:27 | 4 |
TranE91, вряд ли. Скорее всего плохо продумана архитектура. Архитектура приложения не должна учитывать фишки языка, на котором она будет реализована. На Java или C# вы не сможете ее реализовать, т.к. там отсутствует множественное наследование, но на С++ оно разрешено. Поэтому пересматривайте архитектуру приложения
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
||||||
10.11.2010, 14:31 [ТС] | 5 | |||||
эммм........ загвоздка в том, что главным условием этой лабы является такая структура распределения классов. Поинтересовался сегодня у преподши, она сказала, что в производных классах следует использовать виртуальное наследование, т.е. Базовый класс A, следующие производные B,C, и последний производный D,
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
10.11.2010, 14:39 | 6 |
TranE91, ну что я могу сказать, если вы за лабу получите неуд, можете не расстраиваться, вы знаете программирование на уровне вашего преподавателя, а может и лучше, потому что ваш преподаватель программирования не знает
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
|||||||
10.11.2010, 14:40 [ТС] | 7 | ||||||
Да не в этом дело, просто самому интересно. Как препода цензура, меня учить не нужно. Просто интерсно что за трабла, если говорят, что решаема.
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
10.11.2010, 14:47 | 8 |
TranE91, а никто не говорил, что она не решаема, просто такие вещи в реальных проектах не используются, поскольку это фишка только С++, просто относительно принципов ООП эта задача и ее решение является не корректной.
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
|
10.11.2010, 15:24 [ТС] | 9 |
но оно есть)
к сожалению только одна зацепка, виртуальность..... Придется сотворить быдлокод. Добавлено через 34 минуты Да, все-таки трабла была в виртуальности. Если кому интересно. Исходник программы могу куда-нибудь залить.
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
10.11.2010, 16:52 | 10 |
TranE91, можете выложить на форум, заключив его в теги [CPP][/CPP]
0
|
33 / 33 / 2
Регистрация: 24.09.2010
Сообщений: 140
|
|
10.11.2010, 18:56 | 11 |
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
||||||
13.11.2010, 14:59 [ТС] | 12 | |||||
Сорри что так поздно, бухал. Сейчас залью.
Добавлено через 10 минут тут весь проект. Сразу залазить в ашник SALLER. Вообщем то вся фишка в том вышла:
0
|
33 / 33 / 2
Регистрация: 24.09.2010
Сообщений: 140
|
|
13.11.2010, 15:15 | 13 |
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
|
13.11.2010, 15:24 [ТС] | 14 |
перезалил
0
|
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 41
|
|
13.11.2010, 15:25 [ТС] | 15 |
эммммм........ кажется сам отвечаю на свой вопрос. Походу виртуальное наследование нужно и в двух производных(В и С) использовать. А может стоит почитать методичку или Дейтела?
0
|
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 36
|
|
14.03.2019, 07:07 | 16 |
это не нужно.
class D:virtual public A(....),virtual public B(....),virtual public C(....) это влияет только на производные классы от D.
0
|
14.03.2019, 07:07 | |
14.03.2019, 07:07 | |
Помогаю со студенческими работами здесь
16
Как назначить уровень доступа? Права доступа, уровень абстракции Уровень доступа к базу данных RegistryKey, Registry.LocalMachine - Уровень доступа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |