Quelle est la meilleure façon de traiter avec les co-dépendante de classes en C++?

Dire que j'ai une classe foo avec un objet de la classe bar en tant que membre

class foo
{
    bar m_bar;
};

Supposons maintenant que la barre de besoin de garder une trace de la foo qui le possède

class bar
{
    foo * m_pfoo;
}

Les deux classes de référence les uns des autres et sans une déclaration anticipée, ne compilera pas. Ainsi, l'ajout de cette ligne avant de foo déclaration résout ce problème

class bar;

Maintenant, ici, est le problème - lors de l'écriture des fichiers d'en-tête, chaque en-tête dépend de l'autre: foo.h a besoin de définitions de la barre.h et vice-versa. Quelle est la bonne façon de traiter ce?

OriginalL'auteur Nathan Osman | 2010-01-27