Я установил вены 4.7, и я прошел учебник.Все работает.Теперь я построил новый модуль, более похожий на DemoBaseApplLayer.Этот модуль наследуется от BaseAppLayer.В методе initialize я вызываю функцию dispatchMsg.что выглядит следующим образом:
На основе нескольких ответов я ввел cancelAndDelete (msg) в методе деструктор и финиш.Я также добавил метод delete (msg), но безрезультатно
dispatchMsg() {
//SignedBSMMessage sgndBSMMsg(location);
char* inputData = signedBSMMessage.CreateBSMMessage(to_CharPtr(this->curPosition.x),
to_CharPtr(this->curPosition.y),
to_CharPtr(this->curSpeed.z ),
to_CharPtr(this->curDirection.z));
cout << "Start dispatchMsg" << endl;
ObuSigndBSM obuSigndBSM("BasicSafetyMessage", 01);
obuSigndBSM.setSignedBsm(inputData);
obuSigndBSM.setMsgLength(signedBSMMessage.getLength());
Coord pos;
traci->getRoadMapPos(pos);
string laneId = std::to_string(pos.z);
obuSigndBSM.setLandId(laneId.c_str());
bsmMessage=&obuSigndBSM;
this->sendDown(bsmMessage);
//delete bsmMessage;
cout << "End dispatchMsg" << endl;
EV_DEBUG << "BSMApp::dispatchMsg end " ;
delete(bsmMessage);
}
Однако я продолжаю получать это исключение:
Объект BasicSafetyMessage в настоящее время находится в (omnetpp :: cEventHeap)Имитация. scheduled-events, ее нельзя удалить.
Если эта ошибка происходит внутри omnetpp :: cEventHeap, ее необходимо изменить на вызов drop (), прежде чем он сможет удалить этот объект.
Если эта ошибка возникает внутри деструктора omnetpp :: cEventHeap, а базовое сообщение безопасности является членом класса,
omnetpp :: cEventHeap необходимо вызвать drop () в модуле - деструкторе in (Veins:: BSMApp) OBUScenerio.node [0] .appl (id = 7), при t = 1 с, событие # 2
что мне не хватает?Ваш добрый ответ будет оценен.