首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++/Omnet++函数在VeinsInetSampleApplication,veins_inet中被忽略

C++/Omnet++函数在VeinsInetSampleApplication,veins_inet中被忽略
EN

Stack Overflow用户
提问于 2022-05-28 12:07:45
回答 1查看 55关注 0票数 0

我不知道在eclipse/omnet++中添加函数是否有逻辑:尝试简单地向VeinsInetSampleApplication.h头文件添加一个新函数"init_func“

代码语言:javascript
复制
#pragma once

#include "veins_inet.h"

#include "VeinsInetApplicationBase.h"

class VEINS_INET_API VeinsInetSampleApplication : public veins::VeinsInetApplicationBase {
protected:
bool haveForwarded = false;

protected:
virtual bool startApplication() override;
virtual bool stopApplication() override;
virtual void processPacket(std::shared_ptr<inet::Packet> pk) override;
// ADAPTION 2022/05/28
virtual void init_func();


public:
VeinsInetSampleApplication();
~VeinsInetSampleApplication();


};

但是,当我简单地将startApplication()函数的初始化代码复制到VeinsInetSampleApplication.cc中的"init_func()“中时,"init_func()”就被我的模拟忽略了。

下面是代码片段,它将在time t=5秒向所有模拟节点发送一条消息。startApplication()函数的唯一区别是消息发送是在t=5sec触发的。不是在t=10sec。startApplication()函数正确地完成了它的工作,即使我注释掉它并且只让init_func()函数运行,它也会被忽略。(我尝试这样做是为了排除与“此”指针等有关的任何问题,这些问题会表明这两个函数之间存在“糟糕的交互”)。因此,我的init_func()实际上似乎没有注册。但我不知道。有人知道为什么"init_func()“在这里会被Omnet++忽略吗?

Init_func()代码:

代码语言:javascript
复制
void VeinsInetSampleApplication::init_func()
{

// host[0] should stop at t=5s, change in timerManger.create(...)
if (getParentModule()->getIndex() == 0) {
    auto callback = [this]() {
        getParentModule()->getDisplayString().setTagArg("i", 1, "red");

        traciVehicle->setSpeed(0);

        auto payload = makeShared<VeinsInetSampleMessage>();
        timestampPayload(payload);
        payload->setChunkLength(B(100));
        payload->setRoadId(traciVehicle->getRoadId().c_str());

        auto packet = createPacket("accident");
        packet->insertAtBack(payload);
        sendPacket(std::move(packet));
    };


    timerManager.create(veins::TimerSpecification(callback).oneshotAt(SimTime(5, SIMTIME_S)));
}


}

(我还将返回类型"init_func“改为bool,以进一步提高相似性。但这当然也不成功)

向你问好,卢卡斯

EN

回答 1

Stack Overflow用户

发布于 2022-05-28 19:33:04

init_func()被忽略,因为它既不被initialize()调用,也不被任何其他方法调用。您决定创建一个新方法,因此必须在代码中的某个地方添加对该方法的调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72415581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档