OMNET++ Как сохранить все функции в классе AODVRouting, но переопределить только функцию sendAODVPacket?

Я пишу простой модуль для имитации неправильного поведения узла, который наследует все функции от AODRouting и переопределяет функцию sendAODVPacket, отбрасывая пакет AODV после его получения. Файл .h выглядит следующим образом:

#ifndef __PROJECT1_SELFISHBASENODE_H_
#define __PROJECT1_SELFISHBASENODE_H_

#include <omnetpp.h>
#include "AODVRouting.h"

using namespace inet;

class SelfishBaseNode : public AODVRouting
{

protected:
virtual void initialize();
virtual void sendAODVPacket(AODVControlPacket *packet, const L3Address&     destAddr, unsigned int timeToLive, double delay) override;

};

#endif

Файл CC выглядит следующим образом:

#include "SelfishBaseNode.h"
#include <string.h>
#include <omnetpp.h>

Define_Module(SelfishBaseNode);

void SelfishBaseNode::initialize()
{
}


void SelfishBaseNode::sendAODVPacket(AODVControlPacket *packet, const L3Address& destAddr, unsigned int timeToLive, double delay)
{
    EV << "Received message, dropping message now\n";
    delete packet;
}

.NED-файл следующим образом:

package project1;


import inet.node.aodv.AODVRouter;

module snode extends AODVRouter
{
    parameters:
    //@networkNode;
    @display("i=device/wifilaptop");
    @labels(wireless-node);
    @class(SelfishBaseNode);

       submodules:
        bad: SelfishBaseNode {
        @display("p=273,350");
    }
}

Когда я перестраиваю свой проект, я получил эту ошибку:

SelfishBaseNode.h:35:18: error: 'sendAODVPacket' marked 'override' but does not override any member functions.

Любые идеи, как это исправить?


person badman    schedule 20.07.2017    source источник


Ответы (1)


Метод sendAODVPacket() объявлен в AODVRouting.h без virtual. Вы должны добавить virtual перед объявлением sendAODVPacket() в классе AODVRouting в AODVRouting.h

person Jerzy D.    schedule 20.07.2017