3

Player最も近い隣人へのポインターのリストを保持する構造があります。C++ では、構造は次のようになります。

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

このクラスのインスタンスをシリアル化するために protobuf を使用したいと考えています。上記の構造を表すメッセージ定義をどのように記述すればよいでしょうか?

4

2 に答える 2

2

これでうまくいくと思います:

message Player
{
  required string handle = 1;

  repeated Player neighbors = 2;
}

protobuf-c で定義をコンパイルしたところ、動作しているようです。

于 2013-07-04T14:35:34.770 に答える
2

protobuf には「参照」という概念はありません。

したがって、それを行う最も健全な方法は次のとおりです。

メッセージプレイヤー{
  必要な文字列ハンドル = 1;
  繰り返される文字列 neighborHandles = 2;
};

通常、逆シリアル化が完了したら、それらを C++ 参照に変換します。

于 2013-07-05T12:26:33.450 に答える