1
我有一個類似的protobuf的消息中設置在protobuf的重複字段:使用反射
message foo {
repeated double values = 1;
}
我使用反射(如所解釋here)來設置在我的C這樣的值++代碼
auto desc = protoMsg.GetDescription();
auto refl = protoMsg.GetReflection();
auto fd = desc->FindFieldByNumber(1); // run time value
assert(fd->is_repeated());
for (int i = 0; i < vect.size(); ++i)
refl->SetRepeatedDouble(&protoMsg, fd, i, vect[i]);
我的應用程序崩潰在SetRepeatedDouble
功能。有沒有人試圖做過這樣的事情? (使用反射設置值?請注意,由於我的應用程序的動態性質,我必須使用反射。我已經簡化了上面的代碼,稍後暫時不這樣做)
還有關於如何可能調試的任何提示,敬請期待。
謝謝!這雖然略顯不直觀。文檔中說的是: - 可能的錯誤來源: - 在重複字段上調用奇異字段的Get *()或Set *()方法。 - 在非重複字段上調用GetRepeated *(),SetRepeated *()或Add *()。 – skgbanga