2
我正在嘗試使用send()命令創建一個結構並將其數據發送到應用程序/ MAC層。現在我面臨的問題是send()只允許cMessage對象/指針作爲參數。這是一個讓項目停滯不前的問題。通過CMessage發送數組 - OMNET ++
事情到目前爲止,我已經試過有:
- 從cMessage派生而來(?但如何處理數組)
- 重載HandleCommand功能,但再次發送()繼承不允許發送陣列。
任何幫助將非常感激。謝謝!
我正在嘗試使用send()命令創建一個結構並將其數據發送到應用程序/ MAC層。現在我面臨的問題是send()只允許cMessage對象/指針作爲參數。這是一個讓項目停滯不前的問題。通過CMessage發送數組 - OMNET ++
事情到目前爲止,我已經試過有:
任何幫助將非常感激。謝謝!
在OMNeT++
中,可以定義自己的消息。定義可以使用嵌入類型(int,double,string,...)以及自己的類型。
讓我們假設你要發送的Foo.h
定義Foo
一個實例:
// Foo.h
#ifndef _FOO_H
#define _FOO_H
class Foo {
public:
int x;
};
#endif
您應該創建.msg
擴展名的新文件,例如TestMsg.msg
:
// TestMsg.msg
cplusplus {{
#include "Foo.h"
}}
class noncobject Foo;
message TestMsg {
Foo oneObject;
Foo tab[10]; // example of fixed-size array
}
建設項目後,將創建新的C++文件(TestMsg_m.h
和TestMsg_m.cc
)。這些文件包含從cMessage
繼承的TestMsg
類的定義。 TestMsg
類具有所有需要的設置和獲取方法。
非常感謝。真的行。我有一個問題,但。如果我打算做一個向量而不是數組,它會給出奇怪的錯誤。我知道OMNetPP允許使用矢量,但是如何將它包含在消息中是一個我還沒有找到答案的問題。 –
在'OMNeT ++'的消息定義中沒有向量的本地支持。但是,您可以使用'cplusplus'關鍵字並使用'std :: vector'聲明自己的類型,例如:'cplusplus {{0124}}}}} }}'然後在消息中:'IntVector vec;'。 –
感謝它的工作,但我已經做了一個類,併成功地在一個消息中使用它。每當我嘗試在其他消息中使用它時,都會發生奇怪的重定義錯誤。我已經試過noncobject和沒有它...可能是什麼原因? –