Ошибка: нет соответствующей функции для вызова ‘check_and_cast (cModule *&)»
Я пытаюсь использовать текущую позицию из другого модуля «мобильность» с n класса типа MassMobility.
cModule* parentmod = getParentModule();
cModule* mobilitymod = parentmod->getParentModule()->getSubmodule("mobility");
EV<<"Current module is "<<mobilitymod->getFullName() <<endl;
MassMobility* mobility = check_and_cast<MassMobility *>(mobilitymod);
mobility->getCurrentPosition();
Я получаю ошибку времени компиляции: — no matching function for call to ‘check_and_cast(cModule*&)’
, Но все же я могу получить функции из объекта мобильности, как показано в последней строке. Кто-нибудь может подсказать, пожалуйста, как я могу это исправить.
Ну, я выясняю проблему. Первым делом мне нужно было добавить заголовочный файл модуля мобильности в мой текущий субмодуль, чтобы получить определения. Так что я включил
#include "MassMobility.h"#include "StationaryMobility.h"
Затем в коде я сделал следующую модификацию:
cModule* parentmod = getParentModule();
cModule* mobilitymod = parentmod->getParentModule()->getSubmodule("mobility");
MassMobility* massMobilityMod = dynamic_cast<MassMobility*>(mobilitymod);
EV<<"Current position is <<"massMobilityMod->getCurrentPosition();
Таким образом, причиной ошибок является отсутствие определений, которое обеспечивается заголовочными файлами в этом решении.