繁体   English   中英

简单检查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结果的检查可防止代码错误地处理。 断言保护程序免受程序员错误编写内容的侵害。

是否应该断言取决于对象是否不是dynamic_cast的目标类型是错误的。 如果进入此代码,您期望混合使用对象,其中一些是对象,而某些不是A类型A ,则断言将触发合法使用。 如果此时的每个对象都应为A类型A而不是该类型的对象表明存在编程错误,则至少在调试版本中,断言才有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM