Вы не должны вызывать метод ReportModified
напрямую, класс MessageDifferencer
вызывает его, когда обнаруживает разницу.
MessageDifferencer::Compare
- это правильный метод для вызова, согласно документы . Предполагая, что все остальное правильно, я считаю, что изменение вашего кода внутри try-l oop для вызова должно сработать.
Перемещая свой код в функцию, вы можете получить что-то вроде
std::string CompareMessages(
const google::protobuf::Message& m1,
const google::protobuf::Message& m2) {
using google::protobuf::util::MessageDifferencer;
MessageDifferencer diff;
diff.set_report_matches(false);
diff.set_report_moves(false);
std::string reportDiff;
{
google::protobuf::io::StringOutputStream opstream(&reportDiff);
MessageDifferencer::StreamReporter reporter(&opstream);
diff.ReportDifferencesTo(&reporter);
diff.Compare(m1, m2);
}
return std::move(reportDiff);
}