Je sais que le problème de la définition récursive des types en C++ pour les variables membres:Comprendre la « mutuelle Recursion question » pour le type de retour Fonctions
#include "B.h"
class A
{
B b;
};
#include "A.h"
class B
{
A b;
};
Le compilateur se plaint de ce que il n'est pas possible d'allouer la mémoire de cette manière récursive.
Ce que je ne comprends pas est que cela semble appliquer aux définitions de fonction ainsi:
#include "B.h"
class A
{
B foo();
};
#include "A.h"
class B
{
A bar();
};
Les compilateurs donne la même erreur:
error: ‘A’ does not name a type
error: ‘B’ does not name a type
Pourquoi est-ce? Cela n'a pas de sens pour moi que le compilateur ait besoin de réserver de l'espace pour le type de retour. Devrais-je résoudre ce problème avec des pointeurs et une déclaration forward? Dans mon expérience (venant de Java), il est assez commun que les programmeurs utilisent ces définitions récursives pour concevoir des logiciels. Cela semble si difficile à réaliser en C++.
Oui, l'espace doit être réservé pour la valeur de retour. Java renvoie tous les objets de classe par référence. –
La référence vers l'avant est suffisante pour résoudre votre interdépendance. – Jarod42
Ma question était-elle mauvaise? Je me demande pourquoi il y a des downvotes. Peut-être que quelqu'un peut me donner des commentaires et je peux m'améliorer la prochaine fois. Je l'apprécierais. – aeduG