Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
1

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

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

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

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

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

Ругань на объявление массива внутри класса
Задание: создать класс-контейнер, реализующий политику FIFO. Имею код: CQueue.h #ifndef...

Объявление объекта класса fstream в качестве статической компоненты другого класса
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и...

Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса.
Класс Triangle (треугольник). Класс хранит Декартовы координаты трех углов треугольника....

4
ValeryS
Модератор
7721 / 5733 / 742
Регистрация: 14.02.2011
Сообщений: 19,624
Завершенные тесты: 1
01.05.2012, 21:37 2
а как ты собираешься создать объект класса B???
Цитата Сообщение от besh
<a;2978039]конструктор класса В имел доступ к закрытым полям класса А
а чем тебя класс А не устраивает???
0
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
01.05.2012, 21:45  [ТС] 3
ValeryS, я хотел бы чтобы класс B предоставлял удобную навигацию по данным класса А(для работы с ними в открытых методах), и чтоб его нельзя было инициализировать извне
0
DU
1489 / 1135 / 165
Регистрация: 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
0
ValeryS
Модератор
7721 / 5733 / 742
Регистрация: 14.02.2011
Сообщений: 19,624
Завершенные тесты: 1
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();
}
зачем так все усложнять то?
0
01.05.2012, 21:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 21:58

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

Поля дружественного класса
есть примерно такой код class ClientAuthorization { public: int count; //считается в...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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