草庐IT

dynamic-language-runtime

全部标签

c++ - c++ 中的复杂 dynamic_cast

我在C++中有以下情况:抽象基类Abstract1和Abstract2。它们是无关的。类Foo派生自Abstract1和Abstract2我在一个编译单元中,我没有关于类Foo的信息(没有声明,没有定义)。只有Abstract1和Abstract2是已知的。(实际上,Foo甚至定义在一个DLL中)dynamic_cast是否允许从Abstract1*转换为Abstract2*?这是标准吗? 最佳答案 你所描述的是所谓的cross-cast。对于dynamic_cast(v),标准在[expr.dynamic.cast]/8中指定If

c++ - 使用 std::dynamic_pointer_cast 向上转换 std::shared_ptr

我开始在C++0X/11中使用智能指针,但遇到了一个特殊情况。我想使用shared_ptr向上转换一个对象的实例。Extend类继承自Base类,其中Base类具有虚拟析构函数以使其具有多态性(否则dynamic_pointer_cast会提示非多态类转换)。如果因此:std::shared_ptrobj=std::make_shared();然后我做:obj=std::dynamic_pointer_cast(obj);安全吗?其他指向该对象的指针会怎样?是否只有obj将其视为Extend,而其他共享指针仍将其视为Base?向上转换同一实例是否安全,还是我应该做其他事情?编辑:感谢您

c++ - 断言中的 dynamic_cast 导致错误

我正在使用过时的VisualStudio2008(让我为您省去“这是您的问题”的麻烦。)这似乎是VisualStudio的问题:http://rextester.com/XKFR77690这似乎是assert的问题宏:http://ideone.com/bhxMi0给定这些结构:structbase{virtual~base(){}};templatestructFoo:base{Tfoo;};我能做到:base*test=newFoo>;if(dynamic_cast>*>(test)!=NULL)cout但是当我使用与if中完全相同的代码时-assert中的声明:assert(dy

c++ - 带有 const 指针的 boost::dynamic_pointer_cast 不起作用?

假设我有两个类,A和B,其中B是A的子类。我还有以下功能:voidfoo(boost::shared_ptra){boost::shared_ptrb=boost::dynamic_pointer_cast(a);//Error!}用gcc编译会出现以下错误:C:\Boost\include/boost/smart_ptr/shared_ptr.hpp:Inconstructor'boost::shared_ptr>::shared_ptr(constboost::shared_ptr&,boost::detail::dynamic_cast_tag)[withY=constA,T=c

c++ - Visual Studio 2015 : Compile C/C++ without a runtime library

有没有一种方法可以在不使用任何运行时库的情况下使用VisualStudio2015编译C/C++?我需要在没有运行时库的情况下进行编译,因为我正在创建自己的运行时库(用于我的操作系统)。在C/C++->CodeGeneration->RuntimeLibrary上有选项但我想要一个显示“无”的选项。我知道失去了CRT中的许多功能。 最佳答案 要在没有C运行时库(CRT)的情况下编译您的应用程序,请使用/MT、/NODEFAULTLIB链接器选项并在Linker->Advanced处重新定义入口点->入口点在您的代码中定义的函数,例如

c++ - C++ 中的 dynamic_cast 开销

我知道dynamic_cast有运行时检查,因此考虑更安全(可以在失败时返回空指针)但比static_cast慢。但是两者之间的开销有多糟糕?我真的应该考虑在循环中使用static_cast来解决常规大型项目中的性能问题吗?或者差异很小,只与特殊的实时程序有关。 最佳答案 你分析过它吗?规则是:当您知道目标类型有效时使用static_cast。当您不确定时使用dynamic_cast,并且您需要程序为您查找对象的运行时类型。就这么简单。所有其他考虑因素都是次要的。 关于c++-C++中的

未能安装包“Microsoft.VisualStudio.MinShell.Msi.Resources,version=15.0.26228.0,language=en-US”。

我在安装VisualStudio2017的【通用Windlows平台开发】和【使用C++的桌面开发】组件时分别报错:未能安装包“Microsoft.VisualStudio.MinShell.Msi.Resources,version=15.0.26228.0,language=en-US”。未能安装包“Microsoft.VisualStudio.Community.Msi.Resources,version=15.0.26228.0,language=en-US”。查看日志文件如下:安装出现问题。可通过以下方式排查包故障问题:1.使用以下搜索URL来搜索针对每个包故障的解决方案2.针对受与

windows - 在 Windows 中什么是 "runtime image"?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭9年前。Improvethisquestion正在看《MySQL5.0认证学习指南》这本书。第362页指出:•mysql-debug包含对调试的支持。通常,您不会选择此服务器用于生产,因为它具有更大的运行时图像并使用更多内存。什么是“图像”?我进行了广泛的搜索以试图找到答案。

Summary of What Is Natural Language Processing (NLP)?

作者:禅与计算机程序设计艺术1.简介Naturallanguageprocessing(NLP)isasubfieldofartificialintelligencethatinvolvestheuseofcomputationaltechniquestoenablecomputerstounderstandandmanipulatehumanlanguagesastheyarespokenorwritten.Thefieldhasbecomeincreasinglyimportantduetoadvancesinspeechrecognitiontechnology,natural-lang

ChatGLM-6B —— 80%替换ChatGPT的开源对话大模型介绍(GLM,General Language Model )

 ChatGLM-6B模型介绍开源地址:GitHub-THUDM/ChatGLM-6B:ChatGLM-6B:开源双语对话语言模型|AnOpenBilingualDialogueLanguageModel在线体验地址: