Avant la déclaration de la classe ne semble pas fonctionner en C++

Les suivantes code est compilé dans VC++6. Je ne comprends pas pourquoi j'obtiens l'erreur de compilation C2079: 'b' uses undefined class 'B' pour le code suivant.

Classe B Source

#include "B.h"

void B::SomeFunction()
{
}

De Classe B De L'En-Tête

#include "A.h"

struct A;

class B
{
    public:
        A a;
        void SomeFunction();
};

struct Un en-Tête

#include "B.h"

class B;

struct A
{
    B b;
};

Si j'ai changé de catégorie B de l'en-tête pour la suite, alors il n'y aura pas d'erreur. Mais l'en-tête de la déclaration ne sera pas au top!

De classe B, en-Tête bizarre en-tête de la déclaration de

struct A;

class B
{
     public:
        A a;
        void SomeFunction();
};

#include "A.h"
Pouvez-vous les mettre dans le même fichier d'en-tête? Je sais que ce n'est pas particulièrement réponse technique, mais vous pouvez éviter le tout ensemble en faisant cela, si c'est possible.
N'a pas d'importance si vous mettez les deux définitions de classes dans le même fichier d'en-tête, on a encore venir en premier et ne pouvait pas savoir la taille de l'autre classe.
merci pour la clarification, je suis encore très nouveau à cela, et espérait que je n'offrais pas de mauvais conseils, qui j'étais

OriginalL'auteur Lopper | 2009-12-11