1
template <class T=A>
struct B {
   T a;
};

struct A {
    B<A> foo(){
       B<A> result;
       return result;
    }
};

如何避免使用模板(注意默认参数以查看其用法)。问题是这两个类都需要彼此的定义。但是正如模板解决方案所示,没有“真正的”循环依赖。

4

1 回答 1

3

您可以利用这样一个事实,即在您按值返回的情况下,前向声明就足够了(就像 的情况一样A::foo):

struct B;

struct A {
  B foo();
};

struct B {
  A a;
};

B A::foo() {
  B result;
  return result;
}
于 2012-04-25T09:39:56.793 回答