Возвращаясь по указателю или ссылке на C++, легко разбить круговые зависимости с помощью передовых объявлений. Но как вы это делаете в случае, когда вам нужно вернуться по стоимости?Возврат циклической зависимости C++ по значению?
Рассмотрим упрощенный пример ниже
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
Есть ли способ разорвать круговую зависимость? Пытаться направить объявление Бар просто приводит к жалобе о неполном возврате типа.
Не определяйте функцию inline. 'struct Bar; struct Foo {Bar bar();}; struct Bar {Foo foo;}; Bar Foo :: Bar() {return Bar {* this};} ' – immibis