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

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

本文关键字:cModule cast 函数 and 方法 访问 omnet 调用 错误 check 另一个      更新时间:2023-10-16

错误:无匹配函数呼叫'check_and_cast(cmodule*&)'

我试图使用n类类型群体的另一个模块"移动性"使用当前位置。

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();

因此,错误的原因是缺乏定义,该定义由本解决方案中的标头文件提供。