Classe de prototypage
J'ai mis plusieurs instances de la classe b à la classe a, mais cela provoque une erreur de catégorie a ne sait pas ce que la classe b est.
Maintenant, je sais que je peux résoudre ce problème en écrivant mon fichier b a c, mais cela crée de l'accessibilité ainsi que m'agace. Je sais que je peux prototypes de mes fonctions, je n'ai pas ce problème, mais ont été en mesure de trouver pas de matériel sur la façon de créer le prototype d'une classe.
quelqu'un aurait-il un exemple de classe de prototypage en c++.
comme il semble y avoir une certaine confusion laissez-moi vous montrer ce que je veux
class A
{
public:
B foo[5];
};
class B
{
public:
int foo;
char bar;
}
mais cela ne fonctionne pas comme Un ne peut pas voir B donc j'ai besoin de mettre quelque chose devant eux à la fois, si c'était une fonction je mettrais Un(); puis le mettre en œuvre plus tard. comment puis-je le faire avec une classe.
- Cette question est très difficile à comprendre. Quel est mon fichier b a c signifie? Qu'est-prototypage d'une fonction signifie?
- l'écriture de mon fichier b a c, il faut écrire la classe b, puis, en dessous, la classe d'écriture d'un. cela fonctionne, mais en fait le lièvre pour lire comme l'information n'est pas présentée dans l'ordre qu'il a de sens que dans.
- 4 ans plus tard, mais pourquoi ne pas simplement déplacer B déclaration au début?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez déclarer tous vos classes et de définir ensuite dans n'importe quel ordre, comme suit:
class B
avant la définition declass A
, puis de définirclass B
. Alternativement, vous pouvez déclarer toutes les classes avant de définir dans un ordre plus tard.Vous êtes à la recherche pour les déclarations.
Si vous en avant de déclarer une classe, vous pouvez
Cela signifie que dans tous les cas qui ne se termine pas avec les instances de l'Un à l'intérieur de B et vice versa, vous devriez être en mesure de déclarer et définir l'interface entre A et B.
La manière habituelle pour résoudre les dépendances circulaires est d'utiliser une déclaration anticipée:
Vous pouvez fournir une déclaration complète et de définition dans un autre fichier. À l'aide de la déclaration de l'avant, vous pouvez créer des pointeurs et des références à la classe, mais vous ne pouvez pas créer des instances de celui-ci, ce qui suppose de l'intégralité de la déclaration.
class b;
Est-ce que vous avez besoin ?