Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452

Класс - друг

25.04.2015, 13:46. Показов 2852. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня !!!

Столкнулся с проблемой при обьявлении класса Dasa другом класса Da.


В классе Da есть функция void nes ()

С помощью этой функции пытаюсь вызвать функцию void dasaha() класса Dasa.

Получаю 1 ошибку. В чем может быть проблема ?

Заранее спасибо !!!

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
#include <stdio.h>
#include <conio.h>
class Dasa
{
public:
    friend class Da;
    void dasaha()   
    {
        printf("***** dasaha()  Dasa\n\n");
    }
    Dasa()  {printf("***** Dasa const\n\n");}  
    ~Dasa() {}
};
class Da 
{
public:
    void da() {printf("***** da() Da\n\n");}
    void nes () {dasaha();}
    Da()  {printf("***** Da const\n\n");} 
    ~Da() {}
};
int main()
{ 
    Da f;
    f.nes();
    getch();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2015, 13:46
Ответы с готовыми решениями:

Класс-друг
#include &lt;iostream&gt; using namespace std; class first { public: friend second; private: int First; };

Описать класс Друг
Нужно описать класс Друг.Данные класса имя,номер телефона,важность знакомства. Методы должны обеспечить минимальную функциональность...

Класс - друг. Доступ к полям и методам
Есть два класса: MainWindow и LBM_computation, в одном из них происходят вычисления. Класс MainWindow - для визуализации. Надо сделать так,...

44
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
21.06.2015, 22:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот это ошибка (или может быть серьезной ошибкой). так фриендом будут все B<U>
именно этого и хотел добиться господин RAFA91:

Цитата Сообщение от RAFA91 Посмотреть сообщение
Решил сделать class B шаблоном
class B по прежнему друг classа А
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
21.06.2015, 22:24
Цитата Сообщение от hoggy Посмотреть сообщение
именно этого и хотел добиться господин RAFA91:
теперь есть множества классов A и B, и какой какому друг - уточнять надо, но по логике шаблонов без уточнения делать надо чтобы потипно. (почему и сказано что может быть ошибкой). В конечном итоге оно конечно от конкретной задумки зависит. но главное что товарищу RAFA91 разжевали все варианты.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
23.06.2015, 14:15  [ТС]
hoggy в вашем варианте я получаю кучу ошибок от Microsoft Visual C++ 6.0

Добавлено через 2 часа 15 минут
Подскажите пожалуйста почему нельзя выполнить строку № 44

у меня же в классе А есть соответствующий конструктор.

работает только так
C++
1
A <int> n;
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdio.h>
#include <conio.h>
#include<iostream>
 
using namespace std;
 
template <class T> class A
 
{
 
private:
 
    void fav() const {printf("\nclass A private %p\n",this);}
 
    T x;
 
    friend class B;//friend class B<T>;
 
public:
 
    A()  {printf("\nKONSTRUKTOR 1 A %p\n",this);}
 
    A(T a) : x(a) {printf("\nKONSTRUKTOR 2 A %p\n",this);}
 
    ~A() {printf("\nDESTRUKTOR A %p\n",this);}
 
    void amx() const 
    
    {
        printf("\nclass A public %p *** ",this);
 
        cout << x <<"\n";
    }
};
 
class B
 
{
 
private:
 
    void fma() const {printf("\nclass B private %p\n",this);}
 
    A <int> n(9872); // ?????????????
 
    int x;
 
public:
 
    B(int a) : x(a) {printf("\nKONSTRUKTOR B %p\n",this);}
 
    ~B() {printf("\nDESTRUKTOR B %p\n",this);}
 
    template <class T>
 
    void ans (const A <T> & nak) const
    
    {
        printf("\nclass B public %p ********* ",this);
 
        cout << x <<"\n";
 
        fma();
 
        nak.amx();
 
        nak.fav();
    }
};
 
int main()
 
{
    B  b(923);
 
    A <int> n(100);
 
    A <char> k('P');
 
    printf("\n***** b = %p n = %p k = %p\n",&b,&n,&k);
 
    b.ans(n);
 
    printf("\n**********************\n");
 
    n.amx();
 
    k.amx();
 
    getch();
 
    return 0;
}
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
23.06.2015, 16:10
Цитата Сообщение от RAFA91 Посмотреть сообщение
я получаю кучу ошибок от Microsoft Visual C++ 6.0
Это потому, что шаблонные друзья шаблонов в Visual C++ 6.0 не поддерживаются. Ничего с этим не сделать, только смена компилятора поможет.

Цитата Сообщение от RAFA91 Посмотреть сообщение
работает только так
Правильно. А инициализация должна быть в конструкторе B.
C++
1
B(int a) : n(9872), x(a) {printf("\nKONSTRUKTOR B %p\n",this);}
1
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
23.06.2015, 16:39  [ТС]
спасибо Вам большое! буду думать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2015, 16:39

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... Разработать абстрактный класс класс...

Отдельно класс данных, класс формул и главный класс
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Cоздать класс для объектов и сравнить объекты с друг другом
Надо создать 2 объекта, создать класс для объектов и сравнить объекты с друг другом, вот такое задание, не могу правильно сделать, всегда...


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

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru