Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449

Поля дружественного класса

11.12.2012, 17:55. Показов 2151. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть примерно такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ClientAuthorization
{
public:
    int count; //считается в конструкторе, не буду писать весь код, а то много получится
    friend class Role;
    void Function();
};
void ClientAuthorization::Function()
{
    for(int i=0; i<count; i++)
        cout<<Role::name[i];
}
class Role
{
public:
    vector <string> name;
}
пишет "name" не объявленный идентификатор. почему я не могу получить доступ к полям дружественного класса?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2012, 17:55
Ответы с готовыми решениями:

Вызов функций класса Dictionary функциями дружественного класса
Функции класса Tree используют функции дружественного класса Dictionary,но вылетают ошибки,не находятся определения функций класа...

Объявление дружественного класса внутри класса
class A{ friend class B{ B(A &amp;a); } } Подскажите пожалуйста, такое возможно или нет, я хотел чтобы...

Использование дружественного класса
Нужно что бы классы стали общее дружеские вложенные классы поидее в книге написано можно добавить всего лишь к примеру friend class Remote;...

12
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
11.12.2012, 17:59
Невнимательный я) Определение Role должно быть доступно.

Добавлено через 2 минуты
До обращения к name.
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
11.12.2012, 18:03  [ТС]
Цитата Сообщение от gray_fox Посмотреть сообщение
Невнимательный я) Определение Role должно быть доступно.

Добавлено через 2 минуты
До обращения к name.
у меня каждый класс объявлен в отдельном хедере, и соответственно функции в отдельном цпп.
как быть? надо ли в ClientAuthorization.cpp добавить #include "Role.h"?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.12.2012, 18:04
Цитата Сообщение от Tiva Посмотреть сообщение
Role::name[i];
Через точку.
1
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
11.12.2012, 18:06  [ТС]
в ClientAuthorization.cpp добавил #include "Role.h"
теперь ошибки такие:
Code
1
2
3
1>clientauthorization.cpp(98) : error C2597: недопустимая ссылка на нестатический член 'Role::name'
1>clientauthorization.cpp(98) : error C3867: Role::name: в вызове функции отсутствует список аргументов; используйте "&Role::name" для создания указателя на член
1>clientauthorization.cpp(98) : error C2109: для индекса требуется массив или указатель
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.12.2012, 18:06
Ах да. И смысла в дружественном классе нет.
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
11.12.2012, 18:07  [ТС]
Цитата Сообщение от go Посмотреть сообщение
Через точку.
если оставить #include "Role.h"
то выдает
Code
1
clientauthorization.cpp(98) : error C2275: Role: недопустимое использование этого типа в качестве выражения
если убрать этот инклюд, то вот такие ошибки:
Code
1
2
clientauthorization.cpp(98) : error C2027: использование неопределенного типа "Role"
clientauthorization.cpp(98) : error C2228: выражение слева от ".name" должно представлять класс, структуру или объединение
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
11.12.2012, 18:08
Цитата Сообщение от Tiva Посмотреть сообщение
почему я не могу получить доступ к полям дружественного класса?
Друг имеет доступ , но не наоборот. В любом случае это тут не причём - name всё равно в открытом доступе.
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
11.12.2012, 18:09  [ТС]
почему нет смысла в дружественном классе?
мне надо иметь доступ к полям одного класса в другом, без объявления экземпляров 2-ого класса, в 1-ом.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
11.12.2012, 18:10
Цитата Сообщение от Tiva Посмотреть сообщение
выражение слева от ".name" должно представлять класс, структуру или объединение
Т.к. поле не статическое нужен объект класса.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.12.2012, 18:12
Tiva, а если б у тебя был массив Role, то какое из name требовалось бы взять?
Либо делай name static, либо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Role
{
public:
    vector <string> name;
};
 
class ClientAuthorization
{
public:
    int count; //считается в конструкторе, не буду писать весь код, а то много получится
    friend class Role;
    void Function(Role);
};
void ClientAuthorization::Function(Role r)
{
    for(int i=0; i<count; i++)
        cout<<r.name[i];
}
1
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
11.12.2012, 18:14  [ТС]
спасибо, вроде разобрался
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
11.12.2012, 22:04
Цитата Сообщение от Tiva Посмотреть сообщение
Сообщение от go Через точку. если оставить #include "Role.h"
то выдает
Я Вам еще раз говорю - обращайтесь через точку.

Добавлено через 3 часа 38 минут
Цитата Сообщение от Tiva Посмотреть сообщение
почему нет смысла в дружественном классе?
Потому что.
Цитата Сообщение от Tiva Посмотреть сообщение
мне надо иметь доступ к полям одного класса в другом, без объявления экземпляров 2-ого класса, в 1-ом.
Сделайте их статическими.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2012, 22:04
Помогаю со студенческими работами здесь

Метод дружественного класса
Нужно сделать такую ​​задачу, но дойшовшы к этому: выбрать заданное число N абитуриентов, имеющих высокий средний балл (метод...

Вызов функций дружественного класса
У меня есть 2 класса Tree и Dictionary,которые являются друзьями class Tree; class Dictionary { friend class Tree; class...

Объявление дружественного класса в приватной области
class A { public: A(){} private: void Alg(){} friend class B; };

Перенести методы дружественного класса в подключаемый файл
Добрые люди, в отчаянии прошу помощи. Голова уже пухнет, не могу понять что куда откуда и как. Необходимо перенести описание всех методов...

Доступ дружественного оператора к приватным данным класса
Здравствуйте. тока начал изучение С++; составляю прогу практически по учебнику - реализация класса Стринг при компиляции компилятор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru