błąd niekompletnego typu

Próbuję uczynić klasę A przyjacielem klasy B.

<code>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;  

};
</code>

więc moje pytanie, dlaczego jest niekompletny? Myślałem o tym, kiedy to zrobiłemclass B jest to prototyp funkcji, która mówi kompilacji, że gdzieś w kodzie znajduje się definicja.

również w powyższym kodzie na ## 1 ## dlaczego jest to możliwe?

questionAnswers(1)

yourAnswerToTheQuestion