incomplete type error
c++, forward-declaration, friend
Solution
No, that's a forward declaration and does not define a full type. You'll need to have a full definition of `B` before `A`, 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 `B` must be known to `A`, since `A`'s size depends on `B`.
I suggest you `#include "B.h"` in `A.h`.
EDIT: clarification:
struct A;
struct B
{
A foo();
void foo(A);
void foo(A&);
void foo(A*);
A* _a;
A& __a;
A a; // <--- only error here
};
Problem
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 ?