C++ 通过CMessage-OMNET发送数组++

C++ 通过CMessage-OMNET发送数组++,c++,arrays,omnet++,C++,Arrays,Omnet++,我正在尝试创建一个结构,并使用send命令将其数据发送到应用程序/MAC层。现在我面临的问题是send只允许cMessage对象/指针作为参数。这是一个使项目陷入困境的问题 到目前为止,我尝试过的是: 从cMessage继承但是如何处理数组? 重载HandleCommand函数但再次发送不允许发送数组。 任何帮助都将不胜感激。谢谢 在OMNeT++中,可以定义自己的消息。该定义可以使用嵌入式类型int、double、string等。。。以及自己的类型。 假设要发送Foo.h中定义的Foo实例:

我正在尝试创建一个结构,并使用send命令将其数据发送到应用程序/MAC层。现在我面临的问题是send只允许cMessage对象/指针作为参数。这是一个使项目陷入困境的问题

到目前为止,我尝试过的是:

从cMessage继承但是如何处理数组? 重载HandleCommand函数但再次发送不允许发送数组。 任何帮助都将不胜感激。谢谢

在OMNeT++中,可以定义自己的消息。该定义可以使用嵌入式类型int、double、string等。。。以及自己的类型。 假设要发送Foo.h中定义的Foo实例:

您应该创建一个扩展名为.msg的新文件,例如TestMsg.msg:

创建项目后,将创建新的C++文件TestMsgM.h和TestMsg.M.CC。这些文件包含从cMessage继承的TestMsg类的定义。TestMsg类具有所有必需的set和get方法


参考资料:

这是对我有效的实现:

namespace inet;

struct NodeM
{
int type;
string description;
double coords[3];
};
// TODO generated message class
//
message Signal extends cMessage {
   NodeM Result[500];
   int sizeRes;
  NodeM RedQ[500];
  int sizeRed;
} 

谢谢。它确实有效。不过我有一个问题。如果我想做一个向量而不是数组,它会产生奇怪的错误。我知道OMNetPP中允许使用向量,但如何将其包含在消息中是一个我还无法找到答案的问题。OMNeT++中消息定义中没有向量的原生支持。但是您可以使用cplusplus关键字并使用std::vector声明自己的类型,例如:cplusplus{{{include typedef std::vector IntVector;}}},然后在消息中:IntVector vec;。感谢它的工作,但我已经做了一个类,并在一条消息中使用它相当成功。每当我试图在其他消息中使用它时,就会出现一个奇怪的重新定义错误。我已经试过了,但没有试过。。。原因是什么?我在最初的回答中省略了Foo.h中的ifndef指令。现在我的答案被更新了,Foo.h包含了ifndef——它阻止了类的重新定义。很明显,OMNet++中发生了一些变化,这个解决方案不再有效。如果得到导入不需要的错误类型声明,请尝试在legacy 4.x模式下使用行类nonobject Foo;上的-msg4选项调用消息编译器;。但是如果没有这一行,我仍然会得到未知的类型“Foo”。有什么建议吗?我正在使用OMNet++5.5。OMNet++文档尚未更新。
// TestMsg.msg
cplusplus {{ 
#include "Foo.h"
}} 
class noncobject Foo; 

message TestMsg {
    Foo oneObject;
    Foo tab[10]; // example of fixed-size array
}
namespace inet;

struct NodeM
{
int type;
string description;
double coords[3];
};
// TODO generated message class
//
message Signal extends cMessage {
   NodeM Result[500];
   int sizeRes;
  NodeM RedQ[500];
  int sizeRed;
}