OMNET ++如何访问另一个类

时间:2017-08-21 15:49:26

标签: omnet++ inet

我已经使用自定义函数修改了inet NodeStatus.cc,该函数返回变量值,如下所示:

 int NodeStatus::getValueA()
 {
return ValueA;
 }

然后,我创建了另一个名为simpleNodeB.cc的简单模块,我想从NodeStatus.cc中检索ValueA。我在simpleNodeB.cc中尝试了以下代码,但没有工作:

 if(getParentModule()->getSubModule(NodeStatus).getValueA()==test1)
                        bubble("Value is the same");

我收到的错误消息 - >错误:在')之前预期的初级表达式。令牌。我不确定我是否使用正确的方法来调用getValueA()函数。请赐教。非常感谢。

1 个答案:

答案 0 :(得分:0)

您的代码中存在许多错误。

  1. 方法getSubmodule需要a name of module,而不是类名。查看您的NED文件并检查该模块的实际名称。
  2. getSubmodule返回指向cModule对象的指针。它必须手动转换为另一个类。
  3. 假设NodeStatus中的NED模块名为fooStatus,则正确的代码应如下所示:

    cModule *mod = getParentModule()->getSubmodule("fooStatus");
    NodeStatus *status = check_and_cast<NodeStatus*>(mod);
    if(status->getValueA() == test1) 
        bubble("Value is the same");
    

    参考:OMNeT++ Manual