Im trying to make class A a friend of class B.
class B;
class A{
public:
void show(const B&); // ##1## but this one works fine
B ob;// error incomplete type
};
class B{
public:
int b;
B():b(1){}
friend class A;
};
so my question why it’s incomplete type? I thought that when I did class B it’s like a prototype of a function which tell the compile there is a definition somewhere in the code.
also in the code above at ##1## why this is possible ?
No, that’s a forward declaration and does not define a full type. You’ll need to have a full definition of
BbeforeA, if you want to keep the member as an object and not pointer.One of the reason for this is that the size of the class
Bmust be known toA, sinceA‘s size depends onB.I suggest you
#include "B.h"inA.h.EDIT: clarification: