Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
template <class T=A> struct B { T a; }; struct A { B<A> foo(){ B<A> result; return result; } };
如何避免使用模板(注意默认参数以查看其用法)。问题是这两个类都需要彼此的定义。但是正如模板解决方案所示,没有“真正的”循环依赖。
您可以利用这样一个事实,即在您按值返回的情况下,前向声明就足够了(就像 的情况一样A::foo):
A::foo
struct B; struct A { B foo(); }; struct B { A a; }; B A::foo() { B result; return result; }