According to the C++ Primer book, the author mentioned that we can specify a class member function as a friend of another class, instead of the entire class (page 634).
Then, I tested this code:
class A
{
public:
friend void B::fB(A& a);
void fA(){}
};
class B
{
public:
void fB(A& a){};
void fB2(A& a){};
};
I just wanted the fB() to be friend of class A, not the entire class B. But the above code produced an error: 'B' : is not a class or namespace name.
(I am using Visual C++ 2005)
Try putting the B definition before A’s:
Aneeds the full definition ofB. However,Bneeds to know aboutA, but does not need the full definition, so you need the forward declaration ofA.