简单检查dynamic_cast c++
simple check for dynamic_cast c++
我做了一个dynamic_cast,想检查转换是否成功。
我现在正在做一个基本的空指针检查。它是这样的:
A *temp_ptr = dynamic_cast<A *>(obj_ptr);
if( (temp_ptr) && (temp_ptr->some_function()))
{
// do something if the function returns true
}
else
{
// cast failed or function returns false
// continue with normal execution
}
这样行吗?还是我需要使用assert ?我只关心这个特定的函数。我还需要使用其他的支票吗?
它会通过代码审查吗?
检查dynamic_cast
的结果保护代码不做错误的事情。assert保护程序不被程序员写错。
是否应该断言取决于对象不属于dynamic_cast
的目标类型是否错误。如果进入这段代码,您希望看到对象的混合,其中一些是A
类型,而另一些不是,那么将触发一个assert以合法使用。如果此时期望每个对象都是A
类型,并且不是该类型的对象表示编程错误,那么断言是有意义的,至少在调试构建中是这样。
相关文章:
- 如何理解C++标准N3337中的expr.const.cast子句8
- C++Cast运算符过载
- 错误:"cast"未命名类型void setCastDescription(std::string
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- C++:"Expected '(' for function-style cast or type construction"错误
- 为什么选择 g++ 给予者:"error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]"
- Gtk+ g_signal_connect() 和 C++ lambda 会导致"invalid cast"错误
- Shared_ptr cast vs static_cast speed
- 在 iOS 上使用 Aruco 构建 OpenCV 时"Functional-style cast from id to double is not allowed"
- 覆盖 CAST 运算符(我认为它被称为向下转换)
- C++错误,隐 <function-style-cast> 式要求使用模板化类一次调用多个构造函数的多个转换
- 如何修复<function-style-cast>错误:无法从'initializer list'转换为asdending比较<W>(模板函子)
- C++ C++ 中的函数声明,键入 CAST
- static_cast会丢弃错误,但C风格的演员cast有效
- C++ cast char * to unsigned char
- 禁用 Clang 中的"cast from pointer to smaller type uint32_t"错误
- 是否可以使用gcc 3.3版修复与int*cast相关的Sun Solaris OS 5.8分段故障
- C++ const-cast 一个引用
- 错误 C2440: 'type cast':无法从 'bool' 转换为 'CString'