Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
#1

Объявление дружественного класса внутри класса - C++

01.05.2012, 21:32. Просмотров 1071. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
class A{
    friend class B{
               B(A &a);
        }
}
Подскажите пожалуйста, такое возможно или нет, я хотел чтобы конструктор класса В имел доступ к закрытым полям класса А, но компилятор пишет:
E2111 Type 'А::В' may not be defined here
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 21:32     Объявление дружественного класса внутри класса
Посмотрите здесь:
Объявление дружественного класса в приватной области C++
C++ Вызов функций класса Dictionary функциями дружественного класса
Ругань на объявление массива внутри класса C++
C++ Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса.
Метод дружественного класса C++
C++ Поля дружественного класса
Использование дружественного класса C++
C++ Вызов функций дружественного класса
C++ Доступ дружественного оператора к приватным данным класса
C++ Перенести методы дружественного класса в подключаемый файл
C++ delete внутри класса для самого класса
C++ Заполнение вектора класса внутри самого класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,639
01.05.2012, 21:37     Объявление дружественного класса внутри класса #2
а как ты собираешься создать объект класса B???
Цитата Сообщение от besh
<a;2978039]конструктор класса В имел доступ к закрытым полям класса А
а чем тебя класс А не устраивает???
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
01.05.2012, 21:45  [ТС]     Объявление дружественного класса внутри класса #3
ValeryS, я хотел бы чтобы класс B предоставлял удобную навигацию по данным класса А(для работы с ними в открытых методах), и чтоб его нельзя было инициализировать извне
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.05.2012, 21:57     Объявление дружественного класса внутри класса #4
вот в студии компилится:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class A
{
  friend class B;
  class B
  {
  public:
    B(A& a)
    {
      a.m_member = 0;
    }
  };
 
private:
  int m_member;
 
public:
  void f()
  {
    B b(*this);
  }
};
 
int main()
{
  A a;
  a.f();
  return 0;
}
Ну и еще до кучи студийная ошибка для перкого кода:
error C2391: 'A::B' : 'friend' cannot be used during type definition
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,639
01.05.2012, 21:58     Объявление дружественного класса внутри класса #5
Цитата Сообщение от besh
<a;2978099]ValeryS, я хотел бы чтобы класс B предоставлял удобную навигацию по данным класса А(для работы с ними в открытых методах), и чтоб его нельзя было инициализировать извне
ну и создай эти Открытые методы в классе А
C++
1
2
3
4
5
6
7
8
class A
{
privat: 
 int C;
public:
void SetC(int c);
int GetC();
}
зачем так все усложнять то?
Yandex
Объявления
01.05.2012, 21:58     Объявление дружественного класса внутри класса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru