【发布时间】:2015-06-08 15:53:30
【问题描述】:
错误:没有匹配函数调用'check_and_cast(cModule*&)'
我正在尝试使用具有 n 类类型 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*&)’。但我仍然能够从移动对象中获取功能,如最后一行所示。任何人都可以建议我如何纠正它。
【问题讨论】:
-
"没有匹配的 function 调用" ??这真的是错误信息吗?
-
no matching function for call to ‘check_and_cast(cModule*&)’它的确切错误。很抱歉我上次没有注意到 -
@Karoly ovrath - 我什至试图在 omnet google group 中寻找它,我在哪里得到了这个线索:- groups.google.com/forum/#!topic/omnetpp/2CNpYn6E_14 ,这意味着变量名称(移动性)不应与对象名称相同(移动模式)..
-
尝试使用
dynamic_cast而不是check_and_cast,类似于:mobility = dynamic_cast<Veins::TraCIMobility*>(tmpMobility);,然后添加一个断言:ASSERT(mobility); -
您在从外部调用的 public 方法中是否有
Enter_Method("<method_name>")宏?也许你试图调用的方法只是一个没有实际实现的原型......