C++ 将非cObject数据(自定义类)添加到Omnet++;
我正在尝试创建一个数据包并附加一个自定义对象。我通读了手册,并试图按照他们的建议去做,但我被卡住了 根据手册:非cObject数据可以通过将它们包装到cObject中来附加到消息,例如包装到专门为此目的而设计的cMsgPar中 cMsgPar具有函数:setObjectValue(),因此我尝试通过以下代码添加该类:C++ 将非cObject数据(自定义类)添加到Omnet++;,c++,omnet++,veins,inet,C++,Omnet++,Veins,Inet,我正在尝试创建一个数据包并附加一个自定义对象。我通读了手册,并试图按照他们的建议去做,但我被卡住了 根据手册:非cObject数据可以通过将它们包装到cObject中来附加到消息,例如包装到专门为此目的而设计的cMsgPar中 cMsgPar具有函数:setObjectValue(),因此我尝试通过以下代码添加该类: // b is a pointer to a custom object auto packet = createPacket("Msg");
// b is a pointer to a custom object
auto packet = createPacket("Msg");
packet->addPar("data");
packet->par("data").setObjectValue(b);
但是我得到了一个setObject-value函数的“no matching function for call”错误。我检查了函数声明,它是:
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++已经给出了很多方法
msg->addPar("preamble");
msg->par("preamble").setLongValue(0b01010101010101);
send(msg,"phyout");
我希望它能有所帮助我在使用MSGC编译器时遇到一些错误。这个版本是否适用?我建议针对这个问题提出一个新问题,包括您使用的OMNeT++版本。