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

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

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

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

01.05.2012, 21:32. Просмотров 1080. Ответов 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++
class A { public: A(){} private: void Alg(){} friend class B; };

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
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
1481 / 1057 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 21:58     Объявление дружественного класса внутри класса
Еще ссылки по теме:

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

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

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

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

delete внутри класса для самого класса - C++
Доброго времени суток, пишу программу для работы с матрицами. По условию дали лишь несколько библиотек, ни векторов ни cstdio. Для...

Заполнение вектора класса внутри самого класса - C++
class A { private: int a; public: A() { a = 0; }; A get(vector &lt;A&gt;* vec)


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
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