He modificado inet NodeStatus.cc con una función personalizada que devuelve el valor de la variable de la siguiente manera:
int NodeStatus::getValueA()
{
return ValueA;
}
Luego, creé otro módulo simple llamado simpleNodeB.cc y quise recuperar ValueA de NodeStatus.cc. Probé el siguiente código en simpleNodeB.cc pero no funcionó:
if(getParentModule()->getSubModule(NodeStatus).getValueA()==test1)
bubble("Value is the same");
El mensaje de error que recibí -> error: se esperaba una expresión primaria antes del token ")". No estoy seguro de haber usado la forma correcta de llamar a la función getValueA (). Por favor, ilumíneme. Muchas gracias.
Respuestas
0 para la respuesta № 1Hay muchos errores en su código.
- El método
getSubmodule
requiere un nombre de modulo, no es un nombre de clase. Mira tuNED
Archivo y compruebe el nombre real de este módulo. getSubmodule
devuelve un puntero a lacModule
objeto. Tiene que ser lanzado manualmente en otra clase.
Suponiendo que un NodeStatus
módulo en tu NED
es nombrado fooStatus
El código correcto debería verse como:
cModule *mod = getParentModule()->getSubmodule("fooStatus");
NodeStatus *status = check_and_cast<NodeStatus*>(mod);
if(status->getValueA() == test1)
bubble("Value is the same");
Referencia: Manual de OMNeT ++.