Как сделать 2 класса дружественными друг другу (С++)? Всем привет. Есть два класса. Необходимо сделать их дружественными ДРУГ К ДРУГУ.
Как я понял, чтобы сделать класс А дружественными классу Б, компилятор должен ПОЛНОСТЬЮ увидеть класс А, а не только его прототип. Но мне нужно сделать 2 класса "взаимнодружественными".
Модель кода:class A;
class B
{
friend class A;
private:
int x;
public:
B(int x) {this->x = x;}
}
class A
{
friend class B;
private:
int x;
public:
A(int x) {this->x = x;}
}
Собственно, это все.
Заранее спасибо!

21 Авг 2019 в 06:58
1 474 +1
0
Ответы
1

Для того чтобы два класса были дружественными друг другу, нужно использовать forward declaration. То есть, объявить один из классов перед его использованием в другом классе. В вашем случае, вы можете сделать следующим образом:

class B; // Forward declaration
class A
{
friend class B;
private:
int x;
public:
A(int x) {this->x = x;}
};
class B
{
friend class A;
private:
int x;
public:
B(int x) {this->x = x;}
};

Теперь классы A и B будут дружественными друг другу, так как они видят друг друга перед своим определением.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир