|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|||||||||||
Почему невозможен доступ05.10.2017, 15:44. Показов 1185. Ответов 10
Метки нет (Все метки)
Приветствую всех. Есть такой код:
ia можно обратиться только через объект класса A?Рассуждаю так. Создать объект класса B можно только в классе, унаследованном от A. Соответственно, при этом всегда будет создаваться переменная ia. Вот код:
0
|
|||||||||||
| 05.10.2017, 15:44 | |
|
Ответы с готовыми решениями:
10
Почему не могу получить доступ к protected полям из дочернего класса? |
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
|
|||||||||||
| 05.10.2017, 15:52 | |||||||||||
|
То, что Вы написали, практически эквивалентно
И каким боком класс B относится к ia?????????? Если имелось ввиду наследование, то Вам надо что-то типа:
2
|
|||||||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 05.10.2017, 16:12 [ТС] | |
|
zss, спасибо большое. А получится ли в Вашем коде, скрыть класс
B в классе А, оставив возможность доступа к ia?
0
|
|
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
|
||||||
| 05.10.2017, 16:30 | ||||||
|
Как его скрыть, если все наоборот: класс А содержится внутри В.
Может так:
1
|
||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||||||
| 05.10.2017, 16:53 [ТС] | ||||||
|
Сделал так:
A, будут потоконебезопасны, так как переменная ia одна на все объекты всех классов, унаследованных от А. Можно ли реализовать то, что мне требуется, не используя статическую переменную?
0
|
||||||
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
| 05.10.2017, 17:08 | |
Сообщение было отмечено d7d1cd как решение
Решение
Класс B не знает, от какому конкретно объекту A нужно модифицировать переменную. Передайте ему в конструктор указатель на этот объект.
Добавлено через 3 минуты С другой стороны, вы можете в классе A реализовать protected метод generateB(), переменную ai инкрементировать в генераторе generateB, а в наследнике использовать не конструктор B непосредственно, а генератор. Это будет академичненько.
1
|
|
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 05.10.2017, 18:01 [ТС] | |
|
Mirmik, Вы имеете ввиду использовать метод для получения значения и инкремента переменной ia? Но ведь в этом случае все равно надо будет передавать в класс В указатель на объект А. Или нет? Запутался уже...
Добавлено через 8 минут Вроде понял. Метод generateB будет доступен в классе В. При его вызове он будет делать инкремент переменной ia нужного экземпляра класса А.
0
|
|
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
||||||
| 05.10.2017, 18:12 | ||||||
1
|
||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
||||||
| 06.10.2017, 08:29 [ТС] | ||||||
|
Mirmik, решил, все-таки, воспользоваться Вашим первым советом, а именно передавать в конструктор класса
B указатель на A:
0
|
||||||
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
||||||
| 06.10.2017, 11:02 | ||||||
|
А нужен ли класс C?
Возможно, стоит передавать ia не по значению а по указателю?
0
|
||||||
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
| 06.10.2017, 12:44 [ТС] | |
|
COKPOWEHEU, класс
С это пример наследника класса А. Таких наследников будет много и у каждого будут поля типа В с индивидуальными параметрами.
0
|
|
| 06.10.2017, 12:44 | |
|
Помогаю со студенческими работами здесь
11
Почему у методов класса есть доступ к закрытым полям другой переменной такого же типа? "Доступ к ликвидированному объекту невозможен" - почему? Доступ к закрытому потоку невозможен Доступ к закрытому потоку невозможен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|