Динамическая отправка сообщений в OmNet ++

У меня есть другой тип сообщений в .msg файл:

message BaseMsg
{
int instance;
}

message StartMsg extends BaseMsg
{
int request;
}

message LastVoteMsg extends BaseMsg
{
int ballot;
Vote vote;
}

Вот мой простой модуль (proposer.cc файл):

void Proposer::handleMessage(cMessage *msg)
{
EV << "Received msg: " << msg;

StartMsg *startMsg = dynamic_cast<StartMsg *>(msg);
if (startMsg) {
tryNewBallot(startMsg->getInstance(), startMsg->getRequest());
return;
}

LastVoteMsg *lastVoteMsg = dynamic_cast<LastVoteMsg *>(msg);
if (lastVoteMsg) {
handleLastVoteMsg(lastVoteMsg);
return;
}
}

В настоящее время я использую dynamic_cast, но я уверен, что есть лучший способ.

Насколько я понимаю, мне нужен шаблон посетителя / двойной отправки, потому что полиморфизм проверяется во время компиляции. Если я прав, для этого необходимо поместить в сообщение метод, который вызвал бы handleMessage с правильным типом, но так как .msg класс обрабатывается OmNet определенным образом. Я не уверен, что делать дальше.
Я не очень опытный в C ++, поэтому заранее спасибо за любую помощь или подсказку.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector