代码之家  ›  专栏  ›  技术社区  ›  badman

OMNET++如何保留AODVRouting类中的所有函数,但只覆盖sendAODVPacket函数?

  •  0
  • badman  · 技术社区  · 7 年前

    我正在编写一个简单的模块来模拟一个行为错误的节点,该节点继承了AOD的所有函数,并通过在收到AODV数据包后丢弃AODV数据包来覆盖sendAODVPacket函数。.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
    

    #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;
    }
    

    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 回复  |  直到 7 年前
        1
  •  1
  •   Jerzy D.    7 年前

    方法 sendAODVPacket() 在中声明 AODVRouting.h virtual 事实上的 声明之前 sendAODVPacket() 在里面 AODVRouting AODVRouting.h