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
};
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…