template <class T=A>
struct B {
T a;
};
struct A {
B<A> foo(){
B<A> result;
return result;
}
};
如何避免使用模板(请注意默认参数以查看其用法)。 问题是两个类都需要彼此的定义。但是模板解决方案显示没有“真正的”循环依赖性。
答案 0 :(得分:3)
你可以利用这样一个事实,即如果你按价值返回,前向声明就足够了(就像A::foo
一样):
struct B;
struct A {
B foo();
};
struct B {
A a;
};
B A::foo() {
B result;
return result;
}