Дружественный метод класса: E0265 член "A::x" недоступно

Ошибка (активно) E0265 член "A::x" (объявлено в строке 9) недоступно ;

Почему функция становиться дружественной, а методу другого класса другом стать не выходит?

#include <iostream>
using namespace std;
class B;
class A {
private:
    int x = 1;
    friend void B::Take(A& b);
    friend void take(A& b);
};
void take(A& b) {
    cout << b.x << endl;
}
class B {
public:
    void Take(A& b) {
        cout << b.x << endl;
    }
};
int main()
{
    
    
}

Ответы (1 шт):

Автор решения: Harry

А откуда в строке friend void B::Take(A& b); известно, что вообще существует B::Take? Правильно располагайте объявление...

class A;

class B {
public:
    void Take(A& b);
};

class A {
private:
    int x = 1;
    friend void B::Take(A& b);
    friend void take(A& b);
};

void take(A& b) {
    cout << b.x << endl;
}

void B::Take(A& b)
{
    cout << b.x << endl;
}

int main()
{
    
    
}
→ Ссылка