9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|||||||||||
1 | |||||||||||
Как правильно использовать friend для доступа к экземпляру класса21.12.2011, 23:45. Показов 2313. Ответов 10
Метки нет (Все метки)
Доброго времени суток. Проблема - нужно из одного класса обратиться к методам экземпляра другого класса
знаю, что для этого нужно как-то использовать friend, а как - понять не могу Скажем, есть класс index
0
|
21.12.2011, 23:45 | |
Ответы с готовыми решениями:
10
friend функции не имеют доступа к private элементам класса, почему? Как правильно использовать классы? Как вывести значение класса на экран? Явная специализация для friend функции класса При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса |
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
21.12.2011, 23:49 | 2 | |||||
Если вы хотите из класса A обратиться к закрытым полям\метода класса B, то класс A должен быть другом класса B. т.е. в декларации класса B вы должны сказать, что класс A будет его другом.
Какие у вас проблемы то?
0
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
||||||
21.12.2011, 23:53 [ТС] | 3 | |||||
Причём, обращение index.size и подобные (то есть по имени класса, а не по его экземпляру) работают
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
22.12.2011, 00:01 | 4 | |||||
MS VS 8, все компилится. Может у вас что-то древнее и оно не понимает ключевого слова friend?
В чем пишите?
0
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
||||||
22.12.2011, 00:04 [ТС] | 5 | |||||
Vs 2010
Добавлено через 33 секунды
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|||||||||||
22.12.2011, 00:10 | 6 | ||||||||||
как-то у вас все запущено. это вообще не компилится. и вот почему не должно компилится: у вас идут определения классов в такой порядке:
Вам поможет вот что:
0
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
||||||
22.12.2011, 00:14 [ТС] | 7 | |||||
Я думал, оно автоматом всё подхватит...сказывается недостаток теории(
можно про синтаксис по-подробней? на примере
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
22.12.2011, 00:28 | 8 | |||||
Вам френды нигде не нужны в общем-то. вот ваш компилябельный код:
0
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
22.12.2011, 00:36 [ТС] | 9 |
То есть смысл в том, что нельзя использовать то, что не определено "выше"
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
22.12.2011, 00:39 | 10 |
да. именно так. указатели и ссылки хранить или передавать в другие ф-ии можно, если выше есть хотябы декларация класса.
создавать экземпляры класса, обращаться к методам через указатель или ссылку, кастить к базовым классам, использовать sizeof(UnknownClass) - нельзя, если класс не определен выше.
1
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
22.12.2011, 00:40 [ТС] | 11 |
Спасибо
0
|
22.12.2011, 00:40 | |
22.12.2011, 00:40 | |
Помогаю со студенческими работами здесь
11
Исправить реализацию friend-функции для шаблонного класса Как объявить friend функцию класса Передача свойства одного экземпляра класса другому экземпляру класса Посмотрите, где ошибка с перегрузкой оператора и friend функцией для класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |