如何在 MyVeinsApp 应用程序中包含从 DemoSafetyMessage 扩展的新消息?

How to include a new message extended from DemoSafetyMessage in the MyVeinsApp application?

我创建了一个从 DemoSafetyMessage 扩展而来的新安全消息:

import veins.modules.messages.DemoSafetyMessage;
namespace veins;
packet NewSafetyMsg extends DemoSafetyMessage {
double senderAngle;
double PowRxdBmAvg;
}

我将这条新消息包含到 MyVeinsApp 应用程序中,并将其传递给 MyVeinsApp 的 .cc 和 .h 文件中的 onBSM 函数。

#include "veins/modules/messages/NewSafetyMsg_m.h"

void onBSM(NewSafetyMsg* bsm) override; // in the .h file

#include "veins/modules/messages/NewSafetyMsg_m.h" //in the .cc file

但是,我在 .h 文件中收到此错误。

Description Resource    Path    Location    Type ‘void veins::MyVeinsApp::onBSM(veins::NewSafetyMsg*)’ marked ‘override’, but does not override MyVeinsApp.h    /veins/src/veins/modules/application/traci  line 50 C/C++ Problem

我知道 MyVeinsApp 正在扩展 DemoBaseApplLayer,它接受 DemoSafetyMessage,所以应该没有问题!!我做错了什么?

void onBSM(DemoSafetyMessage* bsm) 覆盖; //parentclass

void onBSM(NewSafetyMsg* bsm) 覆盖; //childclass

C++ 中的函数重写不适用于参数不匹配的情况。

来自 TraciDemo11p 示例:

  1. 在 .h 文件中,您需要保持与父文件相同的方法 class

    void onBSM(DemoSafetyMessage* bsm) 覆盖;

  2. 在 .cc 文件中扩展消息(即 NewSafetyMessage)应动态转换为父消息类型(即 DemoSafetyMessage)

    void MyVeinsApp::onBSM(DemoSafetyMessage* bsm)

    {

    NewSafetyMessage* bsm1 = check_and_cast(bsm);

    ......

    ......