I'm trying to have an abstract layer which delivers 
google::protobuf::Message, I assign a type by setting the descriptor.
This all works great.
Now I have a general callback function which has one argument, a reference 
to a protobuf message.

static void receiveCallback(google::protobuf::Message &message)

Now another software layer of mine uses this abstract library, this layer 
has messages defined. So I'm looking for a performant way to cast this 
reference and I'm not quite sure why it wont work.

Using a dynamic_cast throws a bad cast exception, using a static_cast the 
datas are not set.
try {
   MsgFrame & frame = dynamic_cast<MsgFrame&>(message);
} catch (const std::bad_cast& e) {
   LOG(WARNING) << e.what();

However when I create a new MsgFrame and use CopyFrom(..) it works as 
expected. But this is not wanted due to performance overhead.

What is the correct way to cast it?

Thanks in advance!

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to