Lors d'un retour par pointeur ou référence en C++, il est facile de casser les dépendances circulaires avec les déclarations forward. Mais avec vous faites-vous dans un cas où vous devez retourner en valeur?Dépendance circulaire C++ renvoyée par une valeur?
Prenons l'exemple simplifié ci-dessous
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
Est-il possible de briser la dépendance circulaire? Essayer de transmettre declare Bar conduit juste à une plainte sur un type de retour incomplet.
Ne définissez pas la fonction en ligne. 'struct Bar; struct Foo {Barre de barre();}; struct Bar {Foo foo;}; Bar Foo :: Bar() {return Bar {* this};} ' – immibis