2013-07-04 83 views
1

我有一个Player结构,其中包含指向其最近邻居的指针列表。 C++中的结构可能如下所示:protobuf消息持有引用另一个相同类型的消息

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

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

回答

1

protobuf中没有“reference”的概念。

因此sanest的方式做这将是:

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

一般你会然后将它们转换为C++引用您完成反序列化时。

+0

奇怪的是,protobuf.net提供了对引用的一些支持。 –

1

我认为这会做的伎俩:

message Player 
{ 
    required string handle = 1; 

    repeated Player neighbors = 2; 
} 

我编译的protobuf-c中的定义,它似乎是工作。

+0

这个定义的问题是邻居拥有实例而不是引用。我正在寻找一种方法来表示对另一个对象的引用(如指针)。 –

+1

您可以将playerIdentifier引入播放器并用它来标识邻居。 –