C – 循环依赖(在模板化基类中使用内部类型的子类)

前端之家收集整理的这篇文章主要介绍了C – 循环依赖(在模板化基类中使用内部类型的子类)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在模板化的类中遇到了循环依赖的问题.有一个代码示例:
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 { };

猜你在找的C&C++相关文章