我試圖導航到使用下面的代碼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