在 Omnet++ 中将非 cObject 数据(自定义 class)添加到数据包中
Adding non-cObject data (custom class) into a packet in Omnet++
我正在尝试创建数据包并附加自定义对象。我通读了手册并尝试遵循他们的建议,但我被卡住了。
根据手册:非 cObject 数据可以通过将它们包装到 cObject 中附加到消息,例如包装到专门为此目的设计的 cMsgPar 中。
cMsgPar 具有函数:setObjectValue(),因此我尝试通过以下代码添加 class:
// b is a pointer to a custom object
auto packet = createPacket("Msg");
packet->addPar("data");
packet->par("data").setObjectValue(b);
但是我收到 setObject 值函数的 'no matching function for call' 错误。我检查了函数声明,它是:
cMsgPar & setObjectValue (cOwnedObject *obj)
这让我回到原点。尝试将我的自定义 class 转换为 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++ 已经有很多方法可以做到这一点。
msg->addPar("preamble");
msg->par("preamble").setLongValue(0b01010101010101);
send(msg,"phyout");
希望对大家有所帮助
我正在尝试创建数据包并附加自定义对象。我通读了手册并尝试遵循他们的建议,但我被卡住了。
根据手册:非 cObject 数据可以通过将它们包装到 cObject 中附加到消息,例如包装到专门为此目的设计的 cMsgPar 中。
cMsgPar 具有函数:setObjectValue(),因此我尝试通过以下代码添加 class:
// b is a pointer to a custom object
auto packet = createPacket("Msg");
packet->addPar("data");
packet->par("data").setObjectValue(b);
但是我收到 setObject 值函数的 'no matching function for call' 错误。我检查了函数声明,它是:
cMsgPar & setObjectValue (cOwnedObject *obj)
这让我回到原点。尝试将我的自定义 class 转换为 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++ 已经有很多方法可以做到这一点。
msg->addPar("preamble");
msg->par("preamble").setLongValue(0b01010101010101);
send(msg,"phyout");
希望对大家有所帮助