当通过C++中的指针或引用返回时,使用前向声明很容易破坏循环依赖关系。但是在你需要按价值回报的情况下,你会做什么?通过值返回的C++循环依赖项?
考虑下面
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
简化的例子有什么办法打破循环依赖?尝试转发声明栏只会导致对不完整返回类型的投诉。
当通过C++中的指针或引用返回时,使用前向声明很容易破坏循环依赖关系。但是在你需要按价值回报的情况下,你会做什么?通过值返回的C++循环依赖项?
考虑下面
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
简化的例子有什么办法打破循环依赖?尝试转发声明栏只会导致对不完整返回类型的投诉。
不要定义函数内联。 'struct bar; struct Foo {Bar bar();}; struct Bar {Foo foo;}; Bar Foo :: Bar(){return Bar {* this};}' – immibis