草庐IT

dynamic-tools

全部标签

c++ - 如何使用 dynamic_cast 运算符识别失败的强制转换?

ScottMeyer在他的书EffectiveC++中说dynamic_cast用于执行向下或跨继承层次结构的安全转换。也就是说,您使用dynamic_cast将基类对象的指针或引用转换为派生或同级基类对象的指针或引用,这样您就可以确定转换是否成功。失败的转换由空指针(转换指针时)或异常(转换引用时)指示。我想得到两个代码片段,在可以指示转换指针和转换引用的情况下显示失败的转换。 最佳答案 对于指针,这是一个简单的空检查:A*a=newA();B*b=dynamic_cast(a);if(b==NULL){//Castfailed}

c++ - 如何使用 dynamic_cast 运算符识别失败的强制转换?

ScottMeyer在他的书EffectiveC++中说dynamic_cast用于执行向下或跨继承层次结构的安全转换。也就是说,您使用dynamic_cast将基类对象的指针或引用转换为派生或同级基类对象的指针或引用,这样您就可以确定转换是否成功。失败的转换由空指针(转换指针时)或异常(转换引用时)指示。我想得到两个代码片段,在可以指示转换指针和转换引用的情况下显示失败的转换。 最佳答案 对于指针,这是一个简单的空检查:A*a=newA();B*b=dynamic_cast(a);if(b==NULL){//Castfailed}

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

C++ - 在没有 RTTI/dynamic_cast 的情况下向下转换菱形继承对象

我目前正致力于在非RTTI平台(Android)上集成使用大量RTTI内容的第三方包。基本上,我自己实现了RTTI,但遇到了一个问题。问题是很多类都有菱形继承问题,因为所有类都派生自同一个基类(对象)。所以,如果我想从基类向下转换为派生类,我必须使用dynamic_cast-但RTTI不可用!没有dynamic_cast的虚拟继承时,如何将对象从父对象转换为子对象?看起来是这样的:classA{public:virtualchar*func(){return"A";};};classB:publicvirtualA{public://virtualchar*func(){return"

解决JDK报错问题Cannot determine path to ‘tools.jar‘ library for 17 (C:/Program Files/Java/jdk-17.0.1)

项目场景:我使用的是idea2020旗舰版的,然后JDK安装的是jdk17.在运行的时候就出现了这个问题: 问题描述  翻译一下大致意思就是指你的idea无法解析你安装的jdk,后面我又查询了一下jdk手册,发现idea2020只能解析如下的jdk. 原因分析:提示:这里填写问题的分析:所以首先查看自己的jdk版本 首先:Windows+r打开控制平台然后输入cmd 进入平台 在黑框平台内输入 javac-version(注意c后面有个空格)查看自己的jdk版本。 可以看出来我此时的版本是jdk14.理论来讲只要低于jdk14都可以被idea2020 解析运行 解决方案: 重新卸载电脑上的高版

android - 将 tess-two(Tesseract Tools for Android)库集成到 Android 工作室并构建 ndk

我想在androidstudio中导入tess-two库,编译后在ndkbuild中显示错误。我已经尝试过在stackoverflow上给出的解决方案。喜欢,Executionfailedfortask':app:compileDebugNdk'但它并没有解决我的问题。请建议我哪里做错了。它显示以下错误:Error:error:undefinedreferenceto'isnanf'Error:error:undefinedreferenceto'__isinff'Error:error:undefinedreferenceto'isnanf'[arm64-v8a]Install:li

android - 将 tess-two(Tesseract Tools for Android)库集成到 Android 工作室并构建 ndk

我想在androidstudio中导入tess-two库,编译后在ndkbuild中显示错误。我已经尝试过在stackoverflow上给出的解决方案。喜欢,Executionfailedfortask':app:compileDebugNdk'但它并没有解决我的问题。请建议我哪里做错了。它显示以下错误:Error:error:undefinedreferenceto'isnanf'Error:error:undefinedreferenceto'__isinff'Error:error:undefinedreferenceto'isnanf'[arm64-v8a]Install:li

【MMD tools for bleander,Bleander的插件】

插件作用:MMDToolsisablenderaddonforimportingMMD(MikuMikuDance)modeldata(.pmd,.pmx),motiondata(.vmd)andposedata(.vpd).Exportingmodeldata(.pmx),motiondata(.vmd)andposedata(.vpd)aresupportedaswell.下载插件的网址:GitHub-UuuNyaa/blender_mmd_tools:MMDToolsisablenderaddonforimporting/exportingModelsandMotionsofMikuMi

解决:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“

一、问题在安装Python包的时候出现这种报错,是MicrosoftVisualC++14.0BuildTools不全的原因error:MicrosoftVisualC++14.0isrequired.Getitwith"MicrosoftVisualC++BuildTools":http://landinghub.visualstudio.com/visual-cpp-build-tools二、解决参考他人博客,有如下两种方法1、离线安装【亲测有效】(1)下载离线包到下面链接中下载完整的BuildTools包,如果博客内容里的不能用,就到评论区找(已解决)win10安装visualstudi

c++ - dynamic_cast 如何失败?

根据我的阅读,执行错误的运行时dynamic_cast可能会抛出bad_cast异常或返回零。如果你正在转换指针,它会返回零是否正确?即:classBase{virtualvoida(){}};classDerived:publicBase{};intmain(){Base*base=newBase();dynamic_cast(base);return0;}而且它会在转换对象时抛出一个bad_cast异常?即:classBase{virtualvoida(){}};classDerived:publicBase{};intmain(){Basebase;Base&ref=base;d