OmNET++动态检查NED模块是否实现了接口
OmNET++ dynamically check if NED module implements an interface
在 OmNET++ 模拟中,我需要根据传递给构造函数的字符串在C++中动态创建模块。解析字符串,然后像这样创建模块(已经作为 NED 文件存在):
cModuleType* mwType = cModuleType::get(mwName);
cModule* middleware = mwType->create(mwName, this);
但是,我只想创建实现某个moduleinterface
的模块,该模块也在NED文件中定义,即我只想创建定义为simple MyModule like MyInterface {...}
的模块并为所有其他模块抛出异常。有没有办法在 OmNET++ 中检查这种情况?
您可以使用以下方式检查简单模块类是否实现了名为MyInterface
moduleinterface
:
cModuleType *mwType = cModuleType::get(mwName);
std::string desc = mwType->str();
const std::string interfaceName = "MyInterface";
if (desc.find(interfaceName) != std::string::npos) {
EV << mwName << " implements " << interfaceName << endl;
cModule* middleware = mwType->create(mwName, this);
// ...
} else {
EV << mwName << " does not implement " << interfaceName << endl;
}
相关文章:
- 如何从实现接口的模板化类实例访问结构
- 如何在C++中实现接口
- unique_ptr实现接口时对已删除函数的引用
- 避免对实现接口的类使用多个几乎相同的声明
- C#COM组装实现C 接口
- 当传递对类的引用时,优于另一个函数,即实现接口
- 通过其方法的子集实现接口
- C ++类实现接口,接口具有采用任何实现该接口的类的方法
- 错误:在 C++ 中实现接口模式时未定义对 typeinfo 的引用
- 与模板实现接口的类模板
- 在主应用程序中声明的 dll 中实现接口 - C++
- Objective-C类实现C 接口
- 如何添加实现C 接口的标签
- 强制接收实现接口的超类指针作为方法的参数
- 我可以部分实现接口层次结构吗
- 是否可以通过继承实现接口
- 在c++中实现接口
- 如何使用谷歌测试测试实现接口的不同类/结构
- 使用成员函数模板实现接口的功能
- C++ 11 实现接口的方法不可用。为什么?