Промених 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Във вашия код има много грешки.
- Методът
getSubmodule
изисква име на модул, а не име на клас. Виж твоя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 ++.