首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用Omnet 5.3的Castalia3.3上运行示例时出现"Cannot cast from integer to double“错误

在使用Omnet 5.3的Castalia3.3上运行示例时出现"Cannot cast from integer to double“错误
EN

Stack Overflow用户
提问于 2018-08-01 01:54:08
回答 1查看 552关注 0票数 1

当我在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文件时,我发现了双精度类型的参数

参数:

代码语言:javascript
复制
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方面的专家

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 04:29:19

不,这不是bug,这是自OMNeT++ 5.3以来的故意更改。

表达式:

代码语言:javascript
复制
(double) par("packetSpacing")

导致调用doubleValue()cPar.h中对此方法的描述如下

返回值为双精度。cPar类型必须为DOUBLE。

注意:从INT到INT的隐式转换是故意缺失的。

有两种方法可以解决这个问题:

ConnectivityMap.ned.中将

  1. packetSpacing类型从int更改为double

  1. 通过添加int强制将参数读取为intValue(),例如在ConnectivityMap.cc中:

packetSpacing = (double) par("packetSpacing").intValue() / 1000.0;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51619338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档