C++ 圆型

C++ 圆型,c++,typedef,circular-dependency,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需要B中的typedef,B需要A中的一个 使用具有循环依赖性的typedef的典型方法是什么?具有此类循环typedef依赖性的典型解决方案是不具有此类循环typedef依赖性。这些类型的循环 TyPulf

此代码无法编译:

class B;
class A{
  typedef int AThing;
  typedef B::BThing BThing;
};
class B{
  typedef int BThing;
  typedef A::Athing AThing;
};
因为
A
需要
B
中的
typedef
B
需要
A
中的一个


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

具有此类循环
typedef
依赖性的典型解决方案是不具有此类循环
typedef
依赖性。这些类型的循环<代码> TyPulfF依赖关系不能在C++中完成,因此必须重新排列类层次结构:

class B;

typedef int this_is_a_BThing;

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

具有此类循环
typedef
依赖项的典型解决方案是不具有此类循环
typedef
依赖项。这些类型的循环<代码> TyPulfF依赖关系不能在C++中完成,因此必须重新排列类层次结构:

class B;

typedef int this_is_a_BThing;

class A{
  typedef int AThing;
  typedef this_is_a_Bthing BThing;
};
class B{
  typedef this_is_a_BThing BThing;
  typedef A::Athing AThing;
};
使用具有循环依赖性的typedef的典型方法是什么

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

有关如何在类型范围内使用前向声明和扩展依赖TypeDef的案例,请参阅中的答案

在类范围中引入
typedef
的情况与编译器无法通过看到转发声明来解析它这一事实无关


我能想到的使用typedefs的唯一方法是使用,并且实际上只在实现中引入它们

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

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

有关如何在类型范围内使用前向声明和扩展依赖TypeDef的案例,请参阅中的答案

在类范围中引入
typedef
的情况与编译器无法通过看到转发声明来解析它这一事实无关



我能想到的使用typedefs的唯一方法是使用,并且实际上只在实现中引入它们。

这太糟糕了……哦,好吧,太糟糕了……哦,好吧,这不是重复的……这是一个单独的问题这不是重复的……这是一个单独的问题,完全不是重复的IMO,这里没有标题包含,更不用说标题中的循环依赖项了,不知道为什么我不能回答,所以我会在这里回答。这绝对不是重复,而且确实是一个相当困难的问题!这种情况可以通过添加一个以上级别的间接寻址来解决:。“我面临着同样的情况,我现在正在寻找更一般、更有用的解决方案。@Trolliar这是一个解决这个问题的有趣方法。.不是重复的IMO,这里没有标题包含,更不用说标题包含中的循环依赖项了。不知道为什么我不能回答,所以我会在这里回答。”。这绝对不是重复,而且确实是一个相当困难的问题!这种情况可以通过添加一个以上级别的间接寻址来解决:。“我面临着同样的情况,我现在正在寻找更普遍、更有用的解决方案。”特罗利亚尔这是解决这个问题的一个有趣的方法。。