我在模板化的类中遇到了循环依赖的问题.有一个代码示例:
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)的成员或无效使用不完整类型’struct B'(GCC).
更改样本以使其起作用的最佳方法是什么?
解决方法
struct B_base { struct C {}; }; strucr B : A<B_base>,B_base { };