如何将 cMessage 类型转换为消息定义类型
How to typecast cMessage to message definition type
我已经使用 OMNeT++ 的消息定义工具创建了一个消息类型 WowMessage
。假设 class Server
的重写 handleMessage
函数总是接收 WowMessage
消息,该消息最初作为 cMessage
处理。我将如何进行从 cMessage
到 WowMessage
的类型转换,以便我可以使用 WowMessage
类型的已定义成员字段和函数?
void Server::handleMessage(cMessage *msg)
{
// Receives WowMessage which is subclassed from cMessage...
// TODO: typecast from cMessage to WowMessage
forwardMessage(msg);
}
void Server::forwardMessage(WowMessage *msg)
{
send(msg, "port$o", msg->getDestAddress() - 1);
}
使用dynamic_cast
,例如这样:
WowMessage * wowMsg = dynamic_cast<WowMessage *>(msg);
if (wowMsg) {
// msg is an instance of WowMessage
} else {
// another message
}
我已经使用 OMNeT++ 的消息定义工具创建了一个消息类型 WowMessage
。假设 class Server
的重写 handleMessage
函数总是接收 WowMessage
消息,该消息最初作为 cMessage
处理。我将如何进行从 cMessage
到 WowMessage
的类型转换,以便我可以使用 WowMessage
类型的已定义成员字段和函数?
void Server::handleMessage(cMessage *msg)
{
// Receives WowMessage which is subclassed from cMessage...
// TODO: typecast from cMessage to WowMessage
forwardMessage(msg);
}
void Server::forwardMessage(WowMessage *msg)
{
send(msg, "port$o", msg->getDestAddress() - 1);
}
使用dynamic_cast
,例如这样:
WowMessage * wowMsg = dynamic_cast<WowMessage *>(msg);
if (wowMsg) {
// msg is an instance of WowMessage
} else {
// another message
}