c – 使用dynamic_cast进行向下转换返回null
我正在尝试使用dynamic_cast将基类对象强制转换为派生类对象,但dynamic_cast返回null.是否可以使用dynamic_cast进行向下转换?
struct A { virtual ~A() {} }; struct B : A {}; int main() { A* a = new A(); B* b = dynamic_cast<B*>(a); if(b){ std::cout << "b has value" << std::endl; }else{ std::cout << "no value" << std::endl; } } 此代码打印出“无价值”. 解决方法
因为a实际上指的是A而不是B,所以dynamic_cast将会失败.
是的,你可以,例如,如果指向B的确切, A* a = new B; B* b = dynamic_cast<B*>(a); 见http://en.cppreference.com/w/cpp/language/dynamic_cast
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 基于手淘 flexible 的 Vue 组件:TextScroll -- 文字滚动
- Flex 学习站点汇总
- c# – 如何在不使用HttpContext.Current的情况下获取ASP.NE
- c# – 如何将控制台应用程序更改为Windows窗体应用程序?
- BGP AS-PATH 正则表达式的理解
- 诡异!React stopPropagation失灵
- 将XML文件读入C#DataSet
- 【原创】oracle ORA-01157 ORA-01110 DataGuard 备库 临时表
- reactjs – 在测试包含react-slick的create-react-app组件时
- xcode – Generic swift IOS“不是”代码编译错误的子类型