通过相互包含对类型进行排序

时间:2018-01-29 15:55:34

标签: c++ algorithm sorting struct types

我正在为UE4开发我的Google Protobuf to C ++转换器。以下结构来自protobuf的消息。让我们在Messages.h文件中说它们按以下方式列出:

struct B
{
    int i;
    A b;
};

struct A
{
    float f;
    long l;
};

struct C
{
    A a;
    B b;
};

N.B。我无法使用前向声明,也无法使用指针,它们应该是值。

正确的初始化顺序是:A, B, C(这意味着如果按A, B, C顺序定义这些结构,一切都很好)。我有所有类型和他们对其他类型的引用,还有其他类型:int,float,long在我的演示中。

我想按正确的顺序对它们进行排序。我怎么能这样做?如何判断它是不可能的(如果类型相互交叉引用)?

1 个答案:

答案 0 :(得分:0)

拓扑排序工作正常。

Here's the code可以使用典型的拓扑排序对对象进行排序。它还有一些管理图形的功能。如果它会帮助某人,将会受宠若惊。