MFC DYNAMIC_DOWNCAST vs. dynamic_cast
MFC DYNAMIC_DOWNCAST vs. dynamic_cast
MFC 库中的DYNAMIC_DOWNCAST
和标准C++ dynamic_cast
运算符有什么区别?是否可以对 MFC 对象使用安全dynamic_cast
而不是DYNAMIC_DOWNCAST
?
当我的类包含DECLARE_DYNAMIC
宏和IMPLEMENT_DYNAMIC
宏时,是否可以使用运算符dynamic_cast
或者必须对此类对象使用DYNAMIC_DOWNCAST
宏?
MFC 库中的DYNAMIC_DOWNCAST和标准C++ dynamic_cast运算符有什么区别?
DYNAMIC_DOWNCAST和dynamic_cast通过不同的机制在运行时实现相同的目标,即有关对象数据类型的信息。DYNAMIC_DOWNCAST通过使用一组宏来声明和实现用于获取对象的类信息的方法。dynamic_cast通过使用由编译器实现的运行时类型信息来实现相同的目标。
是否可以对 MFC 对象使用安全dynamic_cast而不是DYNAMIC_DOWNCAST? 当我的类包含DECLARE_DYNAMIC宏和IMPLEMENT_DYNAMIC宏时,是否可以使用dynamic_cast运算符,或者必须对此类对象使用DYNAMIC_DOWNCAST宏?
如果使用 RTTI 进行编译并且至少有一个虚拟方法,则允许使用 dynamic_cast。DYNAMIC_DOWNCAST实现了一堆虚拟方法,因此您只需检查编译器是否支持 RTTI 以及它是否已打开。
相关文章:
- 如何理解C++标准N3337中的expr.const.cast子句8
- C++Cast运算符过载
- 在成员dynamic_bitset上使用 boost::from_block_range 时出错,但在本地dynamic
- C++类中的二维"dynamic"数组?
- 错误:"cast"未命名类型void setCastDescription(std::string
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- protobuf in C++ with dynamic binding for google::protobuf::M
- 警告的原因是什么:"when type is in parentheses, array cannot have dynamic size"?
- C++:"Expected '(' for function-style cast or type construction"错误
- 为什么选择 g++ 给予者:"error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]"
- CUDA 错误:"dynamic initialization is not supported for __device__, __constant__ and __shared__ variabl
- Gtk+ g_signal_connect() 和 C++ lambda 会导致"invalid cast"错误
- 如何修复'The procedure entry point SDL_RWclose could not be located in the dynamic link library'
- Shared_ptr cast vs static_cast speed
- 在 iOS 上使用 Aruco 构建 OpenCV 时"Functional-style cast from id to double is not allowed"
- "The ordinal 344 could not be located in the dynamic link library"
- 覆盖 CAST 运算符(我认为它被称为向下转换)
- Dynamic Cast C++ Fail
- dynamic-cast-c++dynamic_cast错误处理