Omnet check_and_cast <>()返回-无法转换(omnetpp :: cModule *)Airport.aerodrome.controltower键入'airport :: ControlTower *'-错误

时间:2019-11-26 11:06:15

标签: simulation omnet++

// 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

0 个答案:

没有答案