当我在ubuntu上使用Omnet5.3运行Castalia 3.3的任何示例时,例如ConnectivityMap一,我得到此错误:
“ 无法评估参数'packetSpacing':(omnetpp :: cIntParImpl)packetSpacing:无法从整数类型转换为双精度-在模块(ConnectivityMap)SN.node [1] .Application(id = 25)中,在t = 0.003536244016s,事件#13 ”。
当我查看SensorNetwork.ned文件时,我发现了双重类型的参数
参数:
double field_x = default (30); // the length of the deployment field
double field_y = default (30); // the width of the deployment field
double field_z = default (0); // the height of the deployment field (2-D field by default)
int numNodes; // the number of nodes
string deployment = default ("");
int numPhysicalProcesses = default (1);
string physicalProcessName = default ("CustomizablePhysicalProcess");
string wirelessChannelName = default ("WirelessChannel");
string debugInfoFileName = default ("Castalia-Trace.txt");
这是一个错误问题吗?新版本的omnet是否存在参数转换问题? 请帮助我,我还不是Omnet的专家
答案 0 :(得分:2)
否,这不是错误,是自OMNeT++ 5.3
起的有意更改。
表达式:
(double) par("packetSpacing")
导致呼叫doubleValue()
。 cPar.h
中对此方法有以下描述:
将值返回为两倍。 cPar类型必须为DOUBLE。
注意:故意从INT隐式转换。
packetSpacing
中将int
形式的double
的类型更改为ConnectivityMap.ned
。或
通过添加int
(例如在intValue()
中强制将参数读取为ConnectivityMap.cc
:
packetSpacing = (double) par("packetSpacing").intValue() / 1000.0;