7

テンプレート化されたクラスで循環依存の問題が発生しました。コードサンプルがあります:

template <typename T> struct A 
{
  typedef typename T::C D;
  //typename T::C c;
};

struct B : public A<B>
{
  struct C {};
};

B をインスタンス化しようとすると、コンパイラ エラーが発生します。「C」は「B」のメンバーではありません(MSVC) または 不完全な型「構造体 B」の使用が無効です (GCC)。
サンプルを機能させるために変更する最良の方法は何ですか?

4

1 に答える 1

6
struct B_base { struct C {}; };
strucr B : A<B_base>, B_base { };
于 2012-08-28T06:29:44.190 に答える