我试图导航到使用下面的代码2级了模块: -导航层次错误:仿真,退出代码终止:139
cModule* parentmod = getParentModule();
cModule* grantParentmod = parentmod->getParentModule();
for (cSubModIterator iter(*grantParentmod); !iter.end();iter++)
EV<<"Current module is "<< iter()->getFullName() <<endl;
,输出是: -
Current module is notificationBoard
Current module is mobility
Current module is udpApp[0]
Current module is udpApp[1]
Current module is udp
Current module is networkLayer
Current module is routingTable
Current module is interfaceTable
Current module is wlan[0]
然而,当我试图直接通过下面的代码[0]访问udpApp: -
cModule* parentmod = getParentModule();
cModule* grantParentmod = parentmod->getParentModule();
cModule* udpmod = parentmod->getParentModule()->getSubmodule("udpApp[0]");
EV<<"Current module is "<< udpmod->getFullName() <<endl;
模拟结束在运行时以下错误:仿真以退出代码终止:139,这意味着分段故障。但是,如果我使用任何其他模块,如'流动性'而不是'udpApp [0]',那么它工作正常。
任何人都可以请帮我找出一种可能的方法来解决这种情况。
如果您有解决方案,请将其添加到您的问题中,最后一部分......或将其作为自我解决方案发布 – user4786271
找到了解决方法,但肯定没有优化: 'cModule * udpmod; 为(cSubModIterator ITER(* grantParentmod); iter.end();!ITER ++){ 如果 (的strcmp(ITER() - > getFullName(), “udpApp [0]”)== 0){ udpmod = iter(); 休息; } } EV <<“当前模块是”<< udpmod-> getFullName()<< endl; '对于所有具有[0]的模块名称(例如wlan [0]),我得到了分段错误。但是对于名称简单的其他模块,我能够完美地导航。 – Peter
@ user4786271,我为最后的评论道歉,但是堆栈溢出禁止我评论5分钟,因为我已经完成了多个编辑,然后我忘了添加评论。对不起 – Peter