如何访问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