Cela fait longtemps que je n'ai pas fait de C++ et je rencontre des problèmes avec les classes se référant mutuellement.Comment puis-je déclarer des classes qui se réfèrent mutuellement?
En ce moment, j'ai quelque chose comme:
ah
class a
{
public:
a();
bool skeletonfunc(b temp);
};
bh
class b
{
public:
b();
bool skeletonfunc(a temp);
};
Comme chacun a besoin d'une référence à l'autre, je l'ai trouvé que je ne peux pas faire un #include de l'autre en haut ou je finis dans une boucle étrange avec les inclus.
Alors, comment puis-je faire en sorte que a
puisse utiliser b
et vice versa sans faire de #include cyclique?
merci!
Assurez-vous de prendre note que vous aurez besoin de se référer à tous les types énoncés déclarés à l'aide des pointeurs ou des références comme indiqué dans cet exemple (b & temp). –
Non, la déclaration d'origine (avec sémantique pass-by-value) serait compilée. Vous aurez besoin de la déclaration de classe complète avant la définition de la méthode, mais pas de déclarer la signature de la méthode: 'class a; vide f (a); Classe A {}; void f (ax) {... 'voir http://stackoverflow.com/questions/389957/forward-declaration-of-a-base-class/390124#390124 –
@David: J'ai édité pour être plus explicite à ce sujet . –