2016-10-19 10 views
0

.protoファイルにEnum Update updateがあります。私は反射を使ってそれを保存したいと思います。プロトコルバッファで反射を使用してEnum値を設定する

refl->SetEnum (msg, fd , ??? ); 

???? - EnumValueDescriptor *にする必要があります(取得する方法がわかりません)

どうすればいいですか?私のようなSのさまざまな可能性をmessage_desc->FindEnumTypeByName(s)->FindValueByNumber(update)を試してみました

UpdateType 
UpdateType::CONFIRM 
CONFIRM 
.... 
.... 
+1

設定したい値について何を知っていますか?例えば、 'Descriptor :: FindEnumValueByName'または' EnumDescriptor :: FindValueByName'、 'FindValueByNumber'等 –

+0

私はDescriptor :: FindEnumValueByNameの取得方法を知っています。私は単純なC++のenum値 '' update''を持っていて、それを設定したいのです。 – v78

+0

私は分かりません。あなたはそれを持っているという意味ですか?どのような形になっていますか? 'EnumValueDescriptor *'を返す 'Descriptor :: FindEnumValueByName'を呼び出すことを止めてから、その戻り値を' SetEnum'に渡しますか?私は難しさの性質をよく理解していません。 –

答えて

1

あなたは三番目の引数に必要なのはEnumValueDescriptorは*です。

また、2番目の引数でFieldDescriptorを渡したことがわかります。だから、FieldDesciptor :: enum_type()を使用してEnumDescriptor *を取得し、次にEnumDescriptor :: Value()を使用してEnumValueDescriptorを取得してください。

関連する問題