当我在ubuntu上使用Omnet5.3运行Castalia3.3的任何示例时,例如connectivityMap one,我得到了这个错误:
“无法计算参数'packetSpacing':(omnetpp::cIntParImpl)packetSpacing:无法从整数类型转换为double - in模块(ConnectivityMap) SN.node1.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");
这是一个bug问题吗?新版本的omnet存在参数转换问题吗?请帮帮我,我还不是Omnet方面的专家
发布于 2018-08-01 04:29:19
不,这不是bug,这是自OMNeT++ 5.3
以来的故意更改。
表达式:
(double) par("packetSpacing")
导致调用doubleValue()
。cPar.h
中对此方法的描述如下
返回值为双精度。cPar类型必须为DOUBLE。
注意:从INT到INT的隐式转换是故意缺失的。
有两种方法可以解决这个问题:
在ConnectivityMap.ned
.中将
packetSpacing
类型从int
更改为double
或
int
强制将参数读取为intValue()
,例如在ConnectivityMap.cc
中:packetSpacing = (double) par("packetSpacing").intValue() / 1000.0;
https://stackoverflow.com/questions/51619338
复制相似问题