我正在使用INET框架在Omnet ++中模拟网络。我想获得节点的位置(协调x& y)。所以我做了这个代码:
cModule *host = getContainingNode(this);
IMobility *mobility = check_and_cast<IMobility *>(host->getSubmodule("mobility"));
... = mobility -> getCurrentPosition();
但是,当我运行模拟时,我收到了此错误
check_and_cast():无法将nullptr转换为'inet :: IMobility *'
你能解释一下这个错误吗? 如我所见,如果模拟器通知,那么 host-&gt; getSubmodule(“mobility”) 是nullptr?
顺便说一下,我在NED文件中定义了 mobilityType 并包含 IMobility.h
答案 0 :(得分:2)
您共享的NED代码显示您有一个实现IMobility接口的简单模块,而C ++代码看起来像是一个简单模块内部的东西,它是一个复合模块,代表网络主机,这个复合模块也是包含一个单独的简单模块,名为&#34; mobility&#34;实现IMobility接口。 (这是在INET中实现代码的方式)。
你应该:
getCurrentPosition
方法访问该对象上的位置。我假设(并推荐)你在第一条路线上工作,所以你应该重新安排你的NED文件。