Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将非cObject数据(自定义类)添加到Omnet++;_C++_Omnet++_Veins_Inet - Fatal编程技术网

C++ 将非cObject数据(自定义类)添加到Omnet++;

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");

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

根据手册:非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-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++版本。