循环Typedef

时间:2016-07-04 21:51:04

标签: c++ typedef circular-dependency

此代码无法编译:

class B;
class A{
  typedef int AThing;
  typedef B::BThing BThing;
};
class B{
  typedef int BThing;
  typedef A::Athing AThing;
};

因为A需要来自typedef的{​​{1}},而B需要来自B的{​​{1}}。

使用具有循环依赖性的typedef的典型方法是什么?

2 个答案:

答案 0 :(得分:2)

具有此类循环condition -> logic | con_and | con_or cond_or -> logic || logic cond_and -> logic && logic logic -> exp > exp | exp < exp | exp >= exp | exp <= exp | exp == exp | exp != exp 依赖关系的典型解决方案是不具有此类的循环typedef依赖关系。这些循环typedef依赖项无法在C ++中完成,因此您必须重新排列类层次结构:

typedef

答案 1 :(得分:0)

  

使用具有循环依赖性的typedef的典型方法是什么?

没有这样的典型方法,你不能这样做。

有关如何在类型范围内使用前向声明和扩展相关typedef的情况,请参阅Resolve header include circular dependencies in C++的答案。

您在类范围内引入typedef的情况并不重要,因为编译器无法通过查看前向声明来解决它。

我能想到使用typedef的唯一方法是使用Pimpl Idion并实际在实现中引入它们。