Wenn durch Zeiger oder Verweis in C++ zurückgegeben wird, ist es einfach, zirkuläre Abhängigkeiten mit Vorwärtsdeklarationen zu brechen. Aber mit tun Sie in einem Fall, wo Sie nach Wert zurückgeben müssen?C++ zirkuläre Abhängigkeit, die nach Wert zurückgibt?
Betrachten Sie das vereinfachte Beispiel unter
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
Gibt es eine Möglichkeit, die zirkuläre Abhängigkeit zu brechen? Wenn Sie versuchen, die Deklarationsleiste weiterzuleiten, führt dies nur zu einer Beschwerde über einen unvollständigen Rückgabetyp.
Definieren Sie die Funktion nicht inline. 'struct Bar; struct Foo {Balken bar();}; struct Balken {Foo foo;}; Bar Foo :: Bar() {return Bar {* this};} ' – immibis