2013-07-04 75 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引入播放器並用它來標識鄰居。 –