dynamic_cast宏救援空
dynamic_cast macro rescue NULL
我想在生成的C++代码中使用dynamic_cast
内在的。宏定义如下所示:
#define jcast(T, v) (dynamic_cast<T*>(v))
遗憾的是,由于代码是生成的,因此可能会发生以下情况:
foo(jcast(UWiseObject, NULL));
一位编译器说:
error: `nullptr_t` is not a pointer.
在这种情况下,我该如何拯救NULL
?我真的很想要这样的东西:
if (v)
return dynamic_cast<T*>(v);
else
return NULL;
嗯,这就是宏给你的。改为编写真实的C++:
template<typename T, typename U>
T* jcast(U* u) { return dynamic_cast<T*>(u); }
template<typename T>
T* jcast(nullptr_t) { return nullptr; }
相关文章:
- 如何理解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错误处理