【问题标题】:protobuf message holding reference to another message of same typeprotobuf 消息持有对同一类型的另一条消息的引用
【发布时间】:2013-07-04 13:37:56
【问题描述】:

我有一个Player 结构,其中包含指向其最近邻居的指针列表。该结构在 C++ 中可能如下所示:

struct Player {
  string handle;
  vector<Player*> neighbors;
};

我想使用 protobuf 来序列化这个类的实例。我将如何编写消息定义来表示上述结构?

【问题讨论】:

    标签: c++ serialization protocol-buffers self-reference


    【解决方案1】:

    protobuf 中没有“引用”的概念。

    因此,最明智的做法是:

    消息播放器{ 所需的字符串句柄 = 1; 重复字符串neighborHandles = 2; };

    通常,当您完成反序列化后,您会将它们转换为 C++ 引用。

    【讨论】:

    • 奇怪的是 protobuf.net 提供了一些对引用的支持。
    【解决方案2】:

    我认为这样可以解决问题:

    message Player
    {
      required string handle = 1;
    
      repeated Player neighbors = 2;
    }
    

    我用 protobuf-c 编译了定义,它似乎可以工作。

    【讨论】:

    • 这个定义的问题是邻居持有实例而不是引用。我正在寻找一种方法来表示对另一个对象的引用(如指针)。
    • 您可以将 playerIdentifier 引入播放器并使用它来识别邻居。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多