2017-07-20 34 views
0

我正在寫一個簡單的模塊來模擬繼承AODRouting的所有功能,並通過刪除AODV數據包一旦收到它,覆蓋sendAODVPacket函數的行爲不當的節點。 .h文件如下:OMNET ++如何保留AODVRouting類中的所有函數,但只覆蓋sendAODVPacket函數?

#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. 

任何想法如何解決是什麼?

回答

1

方法sendAODVPacket()AODVRouting.h中聲明,沒有virtual。您應在sendAODVPacket()之前加virtual,類AODVRouting.h