如何从使用C ++的OMNet ++中的cModule获取cSimpleModule?

时间:2017-02-19 19:41:57

标签: c++ omnet++

我有一个复合模块包含简单的模块(R = receiver_1 + receiver_2),而我的网络包含2个模块(R + R1),它们都是相同的(R类),我想访问简单的模块在使用C ++的两个中,我尝试使用:

cModule *test = getModuleByPath("Network.R");
cSimpleModule *test1 = test->getSubmodule("receiver_2", 6);

但自然我有一个错误告诉我“第二行”从'cModule *'无效转换为'cSimpleModule *'“。那我怎么能访问cModule的cSimpleModule呢?请帮帮我。

1 个答案:

答案 0 :(得分:1)

方法getSubmodule()返回指向cModule对象的指针,因此您应该使用cSimpleModule将结果转换为指向check_and_cast的指针:

cModule *test = getModuleByPath("Network.R");
cSimpleModule *test1 = check_and_cast<cSimpleModule *> (test->getSubmodule("receiver_2"));

此外,getSubmodule()中的第二个参数仅在复合模块包含向量子模块时使用。根据你的描述,没有矢量,所以我建议省略这个论点。