此代码无法编译:
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的典型方法是什么?
答案 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并实际在实现中引入它们。