【发布时间】:2016-05-10 00:12:53
【问题描述】:
在 C++ 中通过指针或引用返回时,使用前向声明很容易打破循环依赖关系。但是在必须按值返回的情况下你会这样做吗?
考虑下面的简化示例
struct Foo {
Bar bar() {return Bar{*this}; }
};
struct Bar {
Foo foo;
}
有没有办法打破循环依赖?尝试转发声明 Bar 只会导致抱怨返回类型不完整。
【问题讨论】:
-
不要内联定义函数。
struct Bar; struct Foo {Bar bar();}; struct Bar {Foo foo;}; Bar Foo::Bar() {return Bar{*this};}
标签: c++ circular-dependency forward-declaration