按相互包含对类型进行排序

Sort types by inclusion to each other

本文关键字:排序 类型 包含      更新时间:2023-10-16

我现在正在为UE4开发Google Protobuf到C++转换器。以下结构是从 protobuf 的消息中得出的。假设在 Messages.h 文件中,它们按以下方式列出:

struct B
{
    int i;
    A b;
};
struct A
{
    float f;
    long l;
};
struct C
{
    A a;
    B b;
};

:注:我不能使用前向声明,也不能使用指针,它们应该是值。

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

我想按正确的顺序对它们进行排序。我该怎么做,我怎么知道这是不可能的(如果类型相互交叉引用(?

拓扑排序工作得很好。

下面是可以使用典型拓扑排序对对象进行排序的代码。它还具有几个管理图形的功能。如果它能帮助某人,会受宠若惊。