我已经使用自定义函数修改了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()函数。请赐教。非常感谢。
答案 0 :(得分:0)
您的代码中存在许多错误。
getSubmodule
需要a name of module,而不是类名。查看您的NED
文件并检查该模块的实际名称。getSubmodule
返回指向cModule
对象的指针。它必须手动转换为另一个类。假设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。