Вы не можете получить доступ к myFriendA.aVariable, потому что компилятор не знает, что он существует.Все, что он знает, это то, что класс A существует (из-за предварительного объявления во второй строке), но он не был полностью определен, поэтому он не знает, каковы его члены / методы.
Если вы хотеличтобы это работало, showA () должно быть объявлено вне области видимости класса.
class A;
class B
{
private:
int bVariable;
public:
B() :bVariable(9){}
void showA(A &myFriendA);
friend class A;
};
class A
{
private:
int aVariable;
public:
A() :aVariable(7){}
void showB(B &myFriendB){
std::cout << "B.bVariable: " << myFriendB.bVariable << std::endl;
}
friend class B; // Friend Class
};
// Define showA() here
void B::showA(A &myFriendA)
{
std::cout << "A.aVariable: " << myFriendA.aVariable << std::endl;
}
int main() {
A a;
B b;
b.showA(a);
a.showB(b);
system("pause");
return 0;
}