Java est un compilateur "moderne". Les modules sont correctement compilés, y compris leurs références croisées. C++ est un "vieux" compilateur, assez intelligent pour tout faire en un seul passage sur le code source. Cependant, cela implique qu'il vous laissera référencer A de B, et même B de A, à condition que vous n'utilisiez que des pointeurs. En fait, quand C++ compile A, il ne sait pas que vous avez une classe B. D'accord, nous pouvons résoudre ce problème en précédant la déclaration de A avec:
class B;
ce qui équivaut à dire au compilateur: D'accord, il y a une classe B un autre endroit. Fantastique. Maintenant vous pouvez mettre des paramètres de type "B * b", car un pointeur n'est qu'un pointeur (4 octets dans les architectures 32bits ...). Cependant, vous ne serez pas capable de compiler quelque chose comme, disons, un paramètre par valeur "B b", car entre autres, le compilateur doit connaître la taille de la classe B, car il n'a même pas compilé encore.
Il y a d'autres considérations au sujet de votre code, spécialement sur le passage ce, (ce est un pointeur), mais ces aspects ont été encore répondu.
Etes-vous sûr que cela capture votre question?'this' est un mot-clé en C et ça fait exactement ça. – Potatoswatter
Votre code ne sera pas compilé. Vous ne pouvez pas utiliser 'this' d'un contexte statique. –
Oui est correct Je ne peux pas utiliser cela dans un contexte statique, supposons que ce n'est pas statique – atomsfat