另一个子模块错误的 Omnet 访问方法 - 没有匹配函数来调用‘check_and_cast(cModule*&)’

Omnet access method of another submodule error - no matching function for call to ‘check_and_cast(cModule*&)’

错误: 没有匹配函数来调用‘check_and_cast(cModule*&)’

我正在尝试使用另一个模块 "mobility" 的当前位置,n class 类型为 MassMobility。

cModule* parentmod = getParentModule();

cModule* mobilitymod = parentmod->getParentModule()->getSubmodule("mobility");
EV<<"Current module is "<<mobilitymod->getFullName() <<endl;

MassMobility* mobility = check_and_cast<MassMobility *>(mobilitymod);
mobility->getCurrentPosition();

我收到编译时错误:- no matching function for call to ‘check_and_cast(cModule*&)’。但我仍然能够从移动对象获取功能,如最后一行所示。任何人都可以建议我如何更正它。

嗯,我想通了。首先,我需要在我当前的子模块中添加移动模块的头文件以获取定义。所以我包括-

#include "MassMobility.h"
#include "StationaryMobility.h"

然后在代码中我做了以下修改:-

cModule* parentmod = getParentModule();
cModule* mobilitymod = parentmod->getParentModule()->getSubmodule("mobility");
MassMobility* massMobilityMod = dynamic_cast<MassMobility*>(mobilitymod);
EV<<"Current position is <<"massMobilityMod->getCurrentPosition();

所以错误的原因是缺少定义,这是由本解决方案中的头文件提供的。