Вы можете сравнить указатель дескриптора (супер быстрый):
if (mMessages[i]->body()->GetDescriptor() == T::descriptor())
mMessages - это пул сетевых сообщений с заголовком и шифрованием, который создает пакет с телом protobuf (google :: protobuf :: Message *).
Итак, чтобы получить правильный вид сообщения, я сравниваю указатель константы дескрипторов, который одинаков для каждого отдельного типа сообщения (не уверен на 100%, но у меня пока нет проблем).
Это был бы самый быстрый способ сравнить прототипное Сообщение без необходимости использовать сравнение строк, которое, кстати, вы можете получить имя типа из дескриптора. : -)