// Airspace.cc
ControlTower* Airspace::getControlTowerInstance(){
cModule * controlTower;
controlTower = getModuleByPath("aerodrome.controltower");
EV<<"GET CONTROL TOWER INSTANCE"<<endl;
ControlTower* target;
target = check_and_cast<ControlTower*>(controlTower);
return target;
}
//Airport.ned
package airport.simulations;
import airport.Airspace;
import airport.Aerodrome;
network Airport{
submodules:
airspace : Airspace;
aerodrome : Aerodrome;
connections:
airspace.out --> aerodrome.in;
aerodrome.out --> airspace.in;
}
//Aerodrome.ned
package airport;
module Aerodrome{
gates:
input in;
output out;
submodules:
parkingarea : ParkingArea;
controltower : ControlTower;
connections:
parkingarea.in <-- in;
parkingarea.out --> out;
}
以上是我要模拟的简单模型中的一些代码片段。问题是我总是会出现标题错误,而我却不知道为什么。我包含了所有头文件,编译不会显示任何错误/警告,但是当我开始仿真时,总是弹出错误。我按照在Omnet提供的《手册》中找到的代码行清理了项目,甚至从头开始重建了项目,但事情没有改变。 从学到的知识,我可以使用
来检索controTower模块。controlTower = getModuleByPath("aerodrome.controltower");
或类似的东西,但是由于总是显示“ GET CONTRO TOWER INSTANCE”,所以问题出在check_and_cast <>()中。请注意,我不会从getModuleByPath()调用中获取nullptr。 完整的错误消息如下:
check_and_cast():无法将(omnetpp :: cModule *)Airport.aerodrome.controltower键入'airport :: ControlTower *'-在模块(airport :: Airspace)Airport.airspace(id = 2)中,位于t = 0s,事件#1