我正在尝试创建一个数据包并附加一个自定义对象。我通读了手册,并尝试遵循他们的建议,但我被卡住了。
根据手册:非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");
我希望它能帮助