Как сделать 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;} } Собственно, это все. Заранее спасибо!
Для того чтобы два класса были дружественными друг другу, нужно использовать 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 будут дружественными друг другу, так как они видят друг друга перед своим определением.
Для того чтобы два класса были дружественными друг другу, нужно использовать forward declaration. То есть, объявить один из классов перед его использованием в другом классе. В вашем случае, вы можете сделать следующим образом:
class B; // Forward declarationclass 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 будут дружественными друг другу, так как они видят друг друга перед своим определением.