在Omnet++中将非cObject数据(自定义类)添加到数据包中



我正在尝试创建一个数据包并附加一个自定义对象。我通读了手册,并尝试遵循他们的建议,但我被卡住了。

根据手册:非cObject数据可以通过将它们包装到cObject中来附加到消息中,例如包装到专门为此目的设计的cMsgPar中。

cMsgPar有函数:setObjectValue((,所以我试图通过以下代码添加类:

// b is a pointer to a custom object
auto packet = createPacket("Msg");
packet->addPar("data");
packet->par("data").setObjectValue(b);

但是对于setObject值函数,我得到了一个"调用没有匹配函数"错误。我检查了函数声明,它是:

cMsgPar &   setObjectValue (cOwnedObject *obj)

这让我回到了原点。试图将我的自定义类转换为Omnet可以接受的内容,以发送到我的网络中的其他节点。

如有任何帮助,我们将不胜感激。

在OMNeT++中通过消息携带自己的类(对象(的推荐方法是将其添加到消息的定义中。例如:

cplusplus {{
#include "MyClass.h"  // assuming that MyClass is declared here 
typedef MyClass *MyClassPtr;
}};
class noncobject MyClassPtr;
packet MyPacket {
int x;
MyClassPtr ptr;
}

参考:OMNeT++模拟手册-6.6使用C++类型

这就是我作为一个简单的解决方案所做的。Omnet++已经给出了很多方法。

msg->addPar("preamble");
msg->par("preamble").setLongValue(0b01010101010101);
send(msg,"phyout");

我希望它能帮助

最新更新