【问题标题】:In omnet++ can handleMessage handle any class other than cMessage?在 omnet++ 中,handleMessage 可以处理 cMessage 以外的任何类吗?
【发布时间】:2017-04-29 03:16:43
【问题描述】:

我想将 MyPacket 类型的变量传递给 handleMessage,但它给出了错误。

packet MyPacket
{  string msg;
 int srcAddress;
 int destAddress;
};

【问题讨论】:

  • 你真的不应该自己调用handleMessage()。只需安排事件,模拟内核就会在此时调用handleMessage,并且以必要的方式调用。

标签: omnet++


【解决方案1】:

您的 MyPacket 将被转换为 C++ 类 MyPacket,它继承自 cPacket。而cPacket 继承自cMessage,因此将由handleMessage 处理。但是,在handleMessage 中,您必须识别并转换您的数据包,例如:

void YourSimpleModule::handleMessage(cMessage *msg) {
   MyPacket * packet = dynamic_cast<MyPacket*> (msg);
   if (packet != nullptr) {
       // it is MyPacket
   } else {
       // other message
   } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多