首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Omnet++:未知参数。无法在模拟中使用模块参数

Omnet++:未知参数。无法在模拟中使用模块参数
EN

Stack Overflow用户
提问于 2016-09-12 11:26:34
回答 1查看 1.5K关注 0票数 3

因此,我尝试在omnetpp中创建一个简单的模拟,并且在模块参数方面遇到了问题。

我提供了一个简单的例子来说明我的问题。--如果我将注释部分保留在所有注释的代码中,则模拟运行良好。如果我不注释所有代码中的注释部分,则我的程序编译得很好,但是模拟无法运行。调试输出如下消息:

在网络设置期间模块(omnetpp::cModule) net (id=1)中出现错误:(收发信机):未知参数“什么”。

我不知道问题是什么,因为“什么”是在我的.ini文件和.ned中定义的。这是我的代码:

transceiver.cc

代码语言:javascript
复制
#include <omnetpp.h>

using namespace omnetpp;


class transceiver : public cSimpleModule
{

    private:
        //int what;

    public:
        transceiver();
        virtual ~transceiver();

    protected:
        virtual void initialize() override;
        virtual void handleMessage(cMessage* msg) override;
};

Define_Module(transceiver);

transceiver::transceiver() {
    //what = par("what");
}

transceiver::~transceiver() {

}

void transceiver::initialize() {
    cMessage* msg = new cMessage("Message");
    send(msg, "out");
}

void transceiver::handleMessage(cMessage* msg) {
    EV << "We got a message!" << endl;
    delete msg;
}

package.ned

代码语言:javascript
复制
package packetgenerator;

@license(omnetpp);

omnetpp.ini

代码语言:javascript
复制
[General]
network = transceiver.net
#net.transceiver.what = 5

transceiver.ned

代码语言:javascript
复制
package transceiver;

simple transceiver
{
    parameters:
        //int what = default(2);
    gates:
        input in;
        output out;
}


network net
{
    submodules:
        transceiver: transceiver;
    connections:
        transceiver.out --> transceiver.in;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 11:51:59

您是,而不是,它应该访问模块构造函数中的参数。参数应在initalize()方法中访问。

使用

代码语言:javascript
复制
transceiver::initialize(int stage) {
    what = par("what");
}

而不是

代码语言:javascript
复制
transceiver::transceiver() {
    what = par("what");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39449261

复制
相关文章

相似问题

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