我在内存管理器模板中使用dynamic_cast<void*>
来获取对象的实际地址。 但是对于不是多态的类型,不允许使用dynamic_cast
。 是否有更通用的方式,还是我需要两个版本的模板?universal dynamic_cast <void*>等价于多态而不是多态类型
0
A
回答
2
您可以使用std::is_polymorphic
对两种可能性进行编译时切换。
相关问题
- 1. 为什么dynamic_cast可以用于非多态类型的upcast?
- 2. 为什么dynamic_cast的不与非多态类型
- 3. C++静态而不是动态多态
- 4. .Net等价于Java类型Class <>?
- 5. 动态强制转换不适用于非多态基类吗?
- 6. 类型不是多态的建议
- 7. F#多态类型
- 8. 多态性而iheriting泛型类
- 9. 向下转换dynamic_cast和多态类不工作
- 10. 多态类转移到传统模块,正在寻找多态类型Legacy :: Class而不是类
- 11. dynamic_cast和多态性的最佳做法
- 12. 泛型类型多态性
- 13. 静态等价于-forwardingTargetForSelector:
- 14. WPF等价于Flex状态
- 15. 抽象类型而不是参数类型的F-bound多态性?
- 16. typeid的用于多态类型
- 17. 检查可以非多态类型的Template类的cast转换(作为dynamic_cast)
- 18. 类型类多态数据类型
- 19. 多态类型的用途是什么?
- 20. 为什么AbstractFactoryUnit具有动态而不是静态多态?
- 21. ++多态类型用C
- 22. Rails多态模型 - 基类
- 23. Ad-hoc多态 - 类型
- 24. Rails类名/类型不适用于多态has_many:通过
- 25. 在C++中是否有一种比较多态类型用于对象等价的方法?
- 26. 不能反序列多态类型
- 27. 不能缩减因为类不是多态吗?
- 28. JSON.Net:反序列化多态类型而不指定程序集
- 29. 当责任不属于类时使用多态而不是条件
- 30. 如何实现动态多态而不扩展类
有任何指针对象类型的**隐式**转换为*指向cv-qualified void *的指针;然而,不能保证产生“真实地址”(不管是什么)。由[conv.ptr]/2保证,结果空指针“代表与原始指针值相同的字节在内存中的地址” – dyp
@DyP:根本没有任何帮助。 – Xeo
@Xeo Huh?它有助于将指向对象的指针转换为无效指针,如果这是OP所需的。 – dyp