如何访问omnet++中的子模块名称?
How to access the submodule name in omnet++?
例如我在.ned文件中定义模块Sample如下。
simple Sample
{
parameters:
@display(...);
gates:
inout InOut;
}
然后我定义了两个子模块如下。
S1: Sample {
@display(...);
}
S2: Sample {
@display(...);
}
在 .cc 文件中,我将 class Sample 定义如下。
class Sample: public cSimpleModule
{
protected:
virtual void handleMessage(cMessage *msg) override;
};
现在,如何在函数 handleMessage 中访问子模块名称?
比如我需要下面的代码
void Sample::handleMessage(cMessage *msg)
{
if(strcmp("S1", this->getSubModuleName()) == 0){
...
}
}
要获取当前对象(即模块、子模块)的名称,请使用 getName()
。但是,要检查名称是否等于给定的字符串,可以使用方便的方法 isName()
,例如:
if (isName("S1")) {
// name is "S1"
}
参考:OMNeT++ API
例如我在.ned文件中定义模块Sample如下。
simple Sample
{
parameters:
@display(...);
gates:
inout InOut;
}
然后我定义了两个子模块如下。
S1: Sample {
@display(...);
}
S2: Sample {
@display(...);
}
在 .cc 文件中,我将 class Sample 定义如下。
class Sample: public cSimpleModule
{
protected:
virtual void handleMessage(cMessage *msg) override;
};
现在,如何在函数 handleMessage 中访问子模块名称?
比如我需要下面的代码
void Sample::handleMessage(cMessage *msg)
{
if(strcmp("S1", this->getSubModuleName()) == 0){
...
}
}
要获取当前对象(即模块、子模块)的名称,请使用 getName()
。但是,要检查名称是否等于给定的字符串,可以使用方便的方法 isName()
,例如:
if (isName("S1")) {
// name is "S1"
}
参考:OMNeT++ API