2017-07-20 7 views
0

私は、AODRoutingからすべての機能を継承した誤ったノードをシミュレートし、AODVパケットを受け取った後に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. 

どのようにthありますか?

答えて

1

sendAODVPacket()AODVRouting.hにはvirtualを含まないと宣言されています。 sendAODVPacket()AODVRoutingクラスに宣言する前にvirtualを追加すると、AODVRouting.h

関連する問題