1

C++ で繰り返されるカスタム プロトコル バッファ フィールドを設定するにはどうすればよいですか?

プロトコル バッファの例:

package protocol;
import "enumerations.proto";
option optimize_for=SPEED;

message UserCommandProtocol {
  required uint64 utcTime=1;
  required uint64 playerId=2;
  optional int32 targetId=3;
  optional int32 number=4;

  message pair {
      required float first = 1;
      required float second = 2;
  }

  repeated uint64 bucketId=5 [packed=true]; 
  repeated pair points=6;
  repeated pair backupPoints=7;

  required COMMANDS command=8;
  optional Type type=9;
  optional Orientation orientation=10;
  optional COMMANDS_PRIORITY priority=11;
}

ポイントの入力に問題があるだけです。私のコードには object がありstd::list<std::pair<float,float>> p、それらの値を にコピーしたいと考えていますUserCommandProtocol points

4

1 に答える 1

3

ペアのリストを繰り返し、それぞれを追加します。

UserCommandProtocol user_command;

// then, iterate over the list... for each element of the list do:

    std::list<std::pair<float,float>>::iterator it = ...; 

    pair* added_pair = user_command.add_points();
    added_pair->set_first(it->first);
    added_pair->set_second(it->second);

Protocol Buffers のドキュメントのセクションFields (特にサブセクションRepeated Embedded Message Fields )を読むことをお勧めします。

于 2012-12-09T20:10:13.880 に答える