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

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

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

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

01.05.2012, 21:32. Просмотров 1086. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объявление дружественного класса внутри класса (C++):

Объявление дружественного класса в приватной области - 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__ ...

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

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

Объявление объекта одного класса в описании другого класса - C++
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой объект уже существует. И почему при...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
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
1483 / 1059 / 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
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 21:58
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.05.2012, 21:58
Ответ Создать тему
Опции темы

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