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 に答える