Omnet++ 如何在.ned文件中声明参数向量

Omnet++ 如何在.ned文件中声明参数向量,omnet++,inet,Omnet++,Inet,我试图在INET的.ned文件中声明一个向量 我尝试了以下方法,但出现语法错误 double new[] @unit(s) = default({0.01s, 0.02s, 0.05s, 0.08s, 0.003s}); 谁能告诉我正确的语法吗 我正在使用OMNET++5.5.1和INET 4框架 谢谢。您不能在NED中声明参数向量。只有模块可以声明为向量。 但是,您可以使用字符串实现类似的效果。 在NED中,声明假装为向量的字符串: string times = default("

我试图在INET的.ned文件中声明一个向量

我尝试了以下方法,但出现语法错误

double new[] @unit(s) = default({0.01s, 0.02s, 0.05s, 0.08s, 0.003s});
谁能告诉我正确的语法吗

我正在使用OMNET++5.5.1和INET 4框架


谢谢。

您不能在NED中声明参数向量。只有模块可以声明为向量。
但是,您可以使用字符串实现类似的效果。
在NED中,声明假装为向量的字符串:

string times = default("0.01s 0.02s 0.05s 0.08s 0.003s");

然后添加你的模块的C++类,例如在初始化()/<代码>代码:

std::vector<std::string> timesStr = cStringTokenizer(par("times")).asVector();
std::vector<simtime_t> timesPar;  
for (auto i : timesStr) {
    simtime_t t = simtime_t::parse(i.c_str());
    timesPar.push_back(t);
}

EV << "Read " << timesPar.size() << " parameters from \"times\"" << std::endl;
// show all read values
for (int j=0; j<timesPar.size(); ++j) {
   EV << timesPar[j] << "; ";
}
std::vector timesStr=cStringTokenizer(par(“times”)).asVector();
std::向量时间间隔;
用于(自动i:timesStr){
simtime_t=simtime_t::parse(i.c_str());
时间间隔推回(t);
}

EV在OMNeT++5.x中,没有向量参数,您只能使用包含空格分隔值的字符串来解决这个问题。另一方面,OMNeT++6预览7引入了
object
参数类型,它可以接受JSON语法数组和映射。所以这是有效的:

 object array = [ 1s, 1+1, 3.14157m, true, false, "Hello", 'World' ];

,您可以从C++代码中访问这个参数作为<代码> CValueReury< /Cuff>类型。

Jerzy,这里“代码> TimeSpab< /Coo>显示数组大小。我有两个问题:1)如何显示值?2) 如何通过输入索引号访问此向量的特定元素,其中索引号是一个变量。例如,乘以[m]=值;其中m是索引号。所以,如果m=1,我将得到0.01。非常感谢
timesPar
只是一个
std::vector
,因此您可以使用例如
simtime\u t x=timesPar[0]获得任何值
int m=1;simtime_t x=timesPar[m]
.Jerzy,是否可以使用字符串声明矩阵?如果是,你能说出它的语法吗?例如,具有2行3列的矩阵。谢谢!是的,可以使用字符串声明矩阵。我鼓励你们用你们需要阅读的矩阵参数的例子问一个新问题——根据SO规则,一个问题只能解决这个问题。非常感谢鲁迪。这两个答案都很有帮助。