首页 > 解决方案 > 是否可以在 OMNET++ 中的参数表达式中进行强制转换?

问题描述

我在 OMNET++ 中有一段相当简单的代码,它从用户那里获取一个参数并用它来决定其他几个参数

network ExampleNetwork
{
    parameters:
         int k;
         int variable = (k / 2);

    ...
}

此代码将正确构建,但运行时会出现错误消息:

'无法评估参数'测试'。不能将 1 从 double 类型转换为 integer(注意:没有从 double 到 int 的隐式转换)'

其中“1”是 k/2 的值。

似乎解决此问题的方法是将表达式的结果显式转换为 int 但我找不到任何说明如何在 NED 文件中执行此操作的文档。

有谁知道它们是怎么写的?

我相信这适用于早期版本的 OMNET++。我现在在 Ubuntu 上使用 5.4 版。

标签: omnet++

解决方案


很抱歉用简单的“RTFM”回答,但这是最有效的:https ://omnetpp.org/doc/omnetpp/manual/#sec:ned-functions:category-conversion

从 OMNeT++ 5.3 开始,double值不再被int隐式转换为。

使用该int函数,如下所示:int variable = int(k / 2);


推荐阅读