/ / OMNET ++ как да получите достъп до функция или променливи в друг клас - omnet ++, inet

OMNET ++ как да получите достъп до функция или променливи в друг клас - omnet ++, inet

Промених inet NodeStatus.cc с персонализирана функция, която връща променливата стойност, както следва:

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

След това създадох друг прост модул, наречен simpleNodeB.cc и исках да извлека ValueA от NodeStatus.cc. Опитах следния код в simpleNodeB.cc, но не работи:

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

Съобщението за грешка, което получих -> грешка: очакван очакван първичен израз преди токена „)“. Не съм сигурен дали съм използвал правилния начин да се обадя на функцията getValueA (). Моля, просвети ме. Благодаря много.

Отговори:

0 за отговор № 1

Във вашия код има много грешки.

  1. Методът getSubmodule изисква име на модул, а не име на клас. Виж твоя NED файл и проверете действителното име на този модул.
  2. 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 ++.