如何在 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 示例:
在 .h 文件中,您需要保持与父文件相同的方法 class
void onBSM(DemoSafetyMessage* bsm) 覆盖;
在 .cc 文件中扩展消息(即 NewSafetyMessage)应动态转换为父消息类型(即 DemoSafetyMessage)
void MyVeinsApp::onBSM(DemoSafetyMessage* bsm)
{
NewSafetyMessage* bsm1 = check_and_cast(bsm);
......
......
我创建了一个从 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 示例:
在 .h 文件中,您需要保持与父文件相同的方法 class
void onBSM(DemoSafetyMessage* bsm) 覆盖;
在 .cc 文件中扩展消息(即 NewSafetyMessage)应动态转换为父消息类型(即 DemoSafetyMessage)
void MyVeinsApp::onBSM(DemoSafetyMessage* bsm)
{
NewSafetyMessage* bsm1 = check_and_cast
(bsm); ......
......