我有一个包含简单模块的复合模块(R =接收器_1 +接收器_2),我的网络包含2个模块(R + R1),这两个模块都是相同的(类R),我想访问两个模块使用C ++,我尝试使用:
cModule *test = getModuleByPath("Network.R");
cSimpleModule *test1 = test->getSubmodule("receiver_2", 6);
但是自然地,我有一个错误告诉我,第二行“从'cModule *'到'cSimpleModule *'的无效转换”。那么如何访问cModule的cSimpleModule?请帮我。
最佳答案
方法getSubmodule()
返回指向cModule
对象的指针,因此您应使用cSimpleModule
将结果转换为指向check_and_cast
的指针:
cModule *test = getModuleByPath("Network.R");
cSimpleModule *test1 = check_and_cast<cSimpleModule *> (test->getSubmodule("receiver_2"));
此外,
getSubmodule()
中的第二个参数仅在复合模块包含子模块的向量时使用。根据您的描述,没有向量,因此我建议省略该论点。关于c++ - 如何使用C++从OMNet++中的cModule获取cSimpleModule?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42331970/