c++ - 如何将 cMessage 类型转换为消息定义类型

标签 c++ omnet++

我已经使用 OMNeT++ 的消息定义工具创建了一个消息类型 WowMessage。假设类 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
}

关于c++ - 如何将 cMessage 类型转换为消息定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153987/

相关文章:

c++ - 在 Omnet++ 上使用 INet 更改消息内容

c++ - 我的 RSU 如何在 Veins 中定期调用函数?

omnet++ - 构建 omnet++ 静脉时出错

C++ [UDP] 如何跟踪服务器上所有已连接(客户端)的套接字连接?

使用OpenCV4将鱼眼图像转换为等距柱状图像的C++算法

c++ - 在类c++的方法中访问类的私有(private)变量

sqlite - 将静脉数据保存在SQLite数据库中

omnet++ - 如果车辆和 RSU 定期广播消息,OMNET++/Veins 模拟是否会变得非常慢?

c++ - 帮忙解决这个问题吗?

c++ - 为RealBasic创建与C/C++库的绑定(bind)