【问题标题】:Omnet/Inet : how to access class/submodules to get variables valuesOmnet/Inet:如何访问类/子模块以获取变量值
【发布时间】:2015-07-15 18:55:40
【问题描述】:

在我的模拟中,有一个由inet框架中的以下组件组成的移动节点:

现在我正在研究UdpApp,即UDPVideoStreamCli.cc,它也是由inet 框架作为示例udp 应用程序之一提供的。

现在从图像中可以看出,我必须访问 lisp 模块(这是 LispRouting.cc 的一个实例),因为我必须读取一些值或调用该类的一些公共方法...我该怎么做?我只知道我必须从

getParentModule()->getSubmodule();

但是我不知道该怎么做……你能帮忙吗?

【问题讨论】:

    标签: omnet++ inet


    【解决方案1】:
    (LispRouting *)getParentModule()->getSubmodule("lisp")
    

    会成功的。一定要检查返回的指针是否不为空。

    通常这是一个糟糕的设计,因为它硬编码了 LispRouting 模块的名称和相对位置。命名/架构的任何更改都会导致崩溃。

    一个适当的设计是创建一个参数来指定 lisp 子模块的名称/路径(具有默认值),然后使用

    #include "inet/common/ModuleAccess.h"
    ...
    LispRouting *lr = getModuleFromPar<LispRouting>(par("lispModule"), this);
    

    然后在模块的NED文件中添加一个参数:

    string lispModule = default("^.lisp");
    

    意思是你可以找到lisp模块的默认位置是:上一层然后找到名为“lisp”的子模块。这是一个更好的模式,因为用户以后可以在不破坏代码的情况下重新配置 lisp 模块的名称/位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2014-02-09
      • 2020-12-30
      相关资源
      最近更新 更多