如何使用Dynamic_cast获得对象类型
How do I get object type using dynamic_cast?
我正在做作业,我被困在某件事上:我已经完成了所有工作,但是在特定类中有一个功能,我不知道如何实现。我有一个名为A的课程,并从A继承的两个班级,我们称它们为B和C。因此,基本上主要类是A,并且继承类是B和C,并且我有一组这些类型的元素(A(,set<A*>
,并且具有标识每个类的枚举,例如:enum { A , B ,C};
该功能必须过滤集合并返回带有枚举类型的集合,例如:
set<A*> MainClass::getByType(Type type) const {
}
问题是我们不允许使用关键字typeid
,而是我们必须使用dynamic_cast
来确定类型。
我的问题是:当我传递set<A*>
中的每个元素时,我应该如何使用dynamic_cast
?
我不明白,请帮助我,这是作业的最后一件事,我被困了,预先感谢您,3
要解决您的任务,您不需要知道哪个类是特定的实例属于的,而是过滤指向特定类别的指针。因此,定义一个函数,该函数检查指针是否是使用Switch的正确类:
bool checkType( A *ptr, Type type )
{
switch( type ) {
case typeB: return dynamic_cast<B*>( ptr );
// check for other types here
...
default: throw std::runtime_error( "this type not supported" );
}
}
然后使用std :: copy_if进行过滤所需的类型,并将它们放入结果集或仅使用范围循环中。如果尚不清楚该代码的工作原理,则可以更明确地编写检查行:
case typeB: return dynamic_cast<B*>( ptr ) != nullptr;
相关文章:
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- 了解 Python 中的对象类型
- 具有纯虚函数和指针数组对象类型的父类的指针数组
- 调用的对象类型 'double' 不是 report() 函数的函数或函数指针
- 基准、值、值类型、对象和对象类型(C++)
- JNI 如何将 Java 对象数组传递给相同对象类型的 C++ 数组
- 在构造过程中更改的对象类型
- 如何构建程序以避免查询对象类型?
- 如何使用Dynamic_cast获得对象类型
- 什么更有效率?在重载函数中或通过在基类函数中检查对象类型来实现
- static_cast实际上不是对象类型的类型是未定义的行为吗?
- 为什么 std::variant 不能容纳数组对象类型,而联合可以?
- 为什么类型转换对象不会更改其地址?有关对象类型的信息存储在哪里?
- 类返回对象类型,但如何返回和检查 null
- 是否可以在辅助功能中概括对象类型
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 当将对象传递给具有参数作为引用类型的函数以及当其类对象类型时,会得到不同的输出
- 如何在运行时指定对象类型
- 我可以获取在重载的新运算符中使用新运算符的对象类型吗?