omn​​etpp:阅读模块参数

时间:2017-03-22 19:44:23

标签: omnet++

我在一个ned文件中定义了以下模块:

 @namespace(cbsdsim);
 simple SASSim {
     parameters:
         @class(SASSim);
         int maxCbsdsPerSas = 10;
 }

我通过调用以下内容(来自另一个模块)来创建模块:

cModuleType* sasSimModType = cModuleType::find("SASSim");
sasSimModType->setName("SASSim");
char* name = "SAS.1";
SASSim* sasSimMod = (SASSim*) sasSimModType->create(name,parent);

调用SASSim的构造函数。这是构造函数:

SASSim::SASSim() {

cout << " SASSim::SASSim" << endl;
//this->finalizeParameters();
int cbsdFanIn = par("maxCbsdPerSas");
 .....
}

然而omnetpp对于在上面的代码片段中调用par(...)感到不满意。我收到一个异常和一个令人困惑的错误消息:

  what():  (omnetpp::cModule): Object has no associated cComponentType (maybe omnetpp::cModule is not derived from cModule/cChannel?)

当我在构造函数中添加this-&gt; getNumParams()时,它返回0.如果我对参数进行硬编码,初始化工作正常,所以我假设我需要做一些事情来加载参数。我可以,可能把参数放在omnetpp.ini或其他地方,但我想知道为什么这不起作用。在调用create加载params之前我必须做些什么吗?谢谢,

1 个答案:

答案 0 :(得分:0)

您只能在初始化后访问参数 - 而不是在模块的构造函数中。这有点奇怪,因为创建cGates等可以从构造函数中正常工作。