Переопределение функций с помощью omnet ++

Как переопределить функцию из включенного класса в omnet ++?
Я получаю ошибку переопределения, когда пытаюсь переопределить функцию, как в c ++.

переопределение «handleMessage (cMessage * msg)»

Это текущий код:

#include "MalAODVRouter.h"#include "AODVRouting.cc"#include "AODVRouting.h"
Define_Module(MalAODVRouter);

void AODVRouting::handleMessage(cMessage *msg) // Error here
{
//-----------------------------------------------------Added to Simulate COPS

std::string currentMsg=msg->getName();

if(BF->CheckBloom(currentMsg)==1)
bubble("Replayed!!");
else
{
BF->AddToBloom(currentMsg);
bubble("Legit Packet");
std::cout<<"Legitimate. Packet is added to the Bloom Filter.\n";
}
//-----------------------------------------------------------------------------

if (!isOperational) {
if (msg->isSelfMessage())
throw cRuntimeError("Model error: self msg '%s' received when isOperational ""is false", msg->getName());

EV_ERROR << "Application is turned off, dropping '" << msg->getName()
<< "' message\n";
delete msg;
}

if (msg->isSelfMessage()) {
if (dynamic_cast<WaitForRREP *>(msg))
handleWaitForRREP((WaitForRREP *)msg);
else if (msg == helloMsgTimer)
sendHelloMessagesIfNeeded();
else if (msg == expungeTimer)
expungeRoutes();
else if (msg == counterTimer) {
rreqCount = rerrCount = 0;
scheduleAt(simTime() + 1, counterTimer);
}
else if (msg == rrepAckTimer)
handleRREPACKTimer();
else if (msg == blacklistTimer)
handleBlackListTimer();
else
throw cRuntimeError("Unknown self message");
}
else {
UDPPacket *udpPacket = dynamic_cast<UDPPacket *>(msg);
AODVControlPacket *ctrlPacket = check_and_cast<AODVControlPacket *>
(udpPacket->decapsulate());
IPv4ControlInfo *udpProtocolCtrlInfo = dynamic_cast<IPv4ControlInfo *>
(udpPacket->getControlInfo());
ASSERT(udpProtocolCtrlInfo != NULL);
IPv4Address sourceAddr = udpProtocolCtrlInfo->getSrcAddr();
unsigned int arrivalPacketTTL = udpProtocolCtrlInfo->getTimeToLive();

switch (ctrlPacket->getPacketType()) {
case RREQ:
handleRREQ(check_and_cast<AODVRREQ *>(ctrlPacket), sourceAddr,
arrivalPacketTTL);
break;
case RREP:
handleRREP(check_and_cast<AODVRREP *>(ctrlPacket), sourceAddr);
break;
case RERR:
handleRERR(check_and_cast<AODVRERR *>(ctrlPacket), sourceAddr);
break;
case RREPACK:
handleRREPACK(check_and_cast<AODVRREPACK *>(ctrlPacket), sourceAddr);
break;
default:
throw cRuntimeError("AODV Control Packet arrived with undefined packet ""type: %d", ctrlPacket->getPacketType());
}
delete udpPacket;
}
}

0

Решение

у вас есть две версии AODVRouting::handleMessage(cMessage *msg) функция. Один в AODVRouting.cc приходящий из #include "AODVRouting.cc" и один в вашем текущем файле, в который вы вставили код, но мы не знаем имя.

Либо удалить #include "AODVRouting.cc" строка из вашего текущего файла или переименуйте ваш класс, чтобы он не перекрывался с AODVRouting имя класса

0

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


По вопросам рекламы [email protected]