草庐IT

dynamic-update

全部标签

c++ - 智能指针和 dynamic_cast

如果我已经回答了这个问题,但我找不到答案,我提前道歉。注意:这是家庭作业,所以如果您觉得回答起来不自在,我完全理解。我有以下内容:ptr.h:templateclassPtr{T*address;size_t*counter;Ptr(T*address):address(address),counter(newsize_t(1)){}Ptr(constPtr&other):address(other.address),counter(other.counter){++(*counter);}virtual~Ptr(){if(0==--(*counter)){deleteaddress;

c++ - 更改静态库的 "Dynamic RTL"设置有什么影响?

在EmbarcaderoRADStudio2010中,静态库的项目选项中有一个名为“动态RTL”的设置。(它在TLib部分。)我的印象是,决定是动态链接还是静态链接RTL是在链接时而不是编译时做出的。但是静态库只能编译;没有链接步骤。那么,更改此选项如何影响我的静态库?我有一些使用这些静态库的.exe和.dll项目,我在这些项目中设置了“动态RTL”选项。这是有道理的,因为他们实际上有一些东西要链接,但我不明白这个设置对静态库有什么影响。如果静态库的DynamicRTL=true而使用该库的DLL和EXE的DynamicRTL=false,是否会导致任何问题?

c++ - 这是 Visual Studio 2013 update 4 C++ 优化器错误还是我的代码有误?

自从我更新到boost1.58和VS2013以来,我一直看到我们的软件崩溃。只有当编译器优化开启时,我们才会看到崩溃。使用boost1.55没有崩溃。我已经设法隔离了我在boost::any_range中看到的问题以及我们如何使用它。查看下面的示例代码:#include#include#include#include#includeclassDummyElement{public:floatf_;};usingElementRange=boost::any_range;usingDummyElementUPtr=std::unique_ptr;classBoostAnyTest{pub

c++ - 繁忙的应用程序导致 Windows 7 上出现错误的 "Not responding"状态 - WM_UPDATE

在长期操作过程中,我们的C++Win32应用程序会显示一个带有进程条的模态状态对话框,每隔几秒左右不定期更新一次。从Windows7开始,我们意识到Windows很快就会显示一条消息“似乎挂起...”和/或将“无响应”附加到我们的窗口标题栏。我们发现进程对话框必须处理消息以避免这种情况。更具体地说,Windows7似乎不断发送WM_UPDATE消息来检查我们的程序是否存在。我们以前在此对话框中禁用了所有不需要的消息处理,因为配置文件运行显示它们是一个主要的减速。但是,尽管我们认为已经解决了该问题,但用户再次报告此类问题:Windows显示“似乎挂起...”和/或将“无响应”附加到我们的

c++ - 为什么 dynamic_cast 是邪恶的还是不邪恶的?在这种情况下我应该使用 dynamic_cast 吗?

有人说theuseofdynamic_castoftenmeansbaddesignanddynamic_castcanbereplacedbyvirtualfunctions为什么使用dynamic_cast被认为是糟糕的设计?假设我有函数名称func(Animal*animal,intanimalType),func中的实现如下:boolfunc(Animal*animal,intanimalType){.../*AnimalisthebaseclassofBear,Panda,Fish....dynamic_castanimaltorealanimals(Bear,Panda,F

c++ - 为什么虚函数调用比 dynamic_cast 快?

我写了一个简单的例子,估计调用虚函数的平均时间,使用基类接口(interface)和dynamic_cast和调用非虚函数。这是它:#include#include#include#include#defineCALL_COUNTER(3000)__forceinlineintsomeFunction(){return5;}structBase{virtualintvirtualCall()=0;virtual~Base(){};};structDerived:publicBase{Derived(){};virtual~Derived(){};virtualintvirtualCal

c++ - 避免 dynamic_cast/RTTI

我最近正在为一个副项目(cpp-markdownlibrary,出于好奇)编写一段C++代码,遇到了一个编码问题,我想听听一些意见。cpp-markdown有一个名为Token的基类,它有许多子类。两个主要的子类是Container(包含其他Token的集合)和TextHolder(用作Token的基类当然是包含文本的)。大部分处理是通过虚函数处理的,但其中一些处理在单个函数中处理效果更好。为此,我最终使用dynamic_cast将指针从Token*向下转换为它的子类之一,这样我就可以调用特定于子类的函数,并且它的子类。转换不可能失败,因为代码能够通过虚函数(例如isUn​​match

c++ - 如何防止Visual Studio 2015 Update 2 添加telemetry_main_invoke_trigger?

AsimpleC++consoleappintmain(){return0;}在VisualStudio2015Update2中编译,将对telemetry_main_invoke_trigger的调用添加到Debug和Release二进制文件中。我怎样才能避免这种情况? 最佳答案 根据Microsoft’sSteveCarroll(VisualC++团队的开发经理),您可以通过将notelemetry.obj添加到链接器的命令选项来删除遥测调用:SteveCarroll解释说这将在即将到来的更新3中被删除:Ourintentwas

c++ - dynamic_cast<>有多快

...大约与典型的std::string::operator==()相比?我在下面提供了更多详细信息,我不确定它们是否有任何相关性。具有复杂性或近似值的答案就足够了。谢谢!详细信息:我将在列表的for循环中使用它来查找一些特定实例。我估计我的平均继承水平为3.5类。我正在寻找的那个有一个父类、一个祖父类和在这两个“接口(interface)”之上,即用几个virtualvoidabc()=0;来抽象类。没有我要查找的子类。 最佳答案 这在很大程度上取决于您的编译器、特定的类层次结构、硬件以及各种因素。您确实需要直接在您的特定应用程序

c++ - 如果与指针一起使用,dynamic_cast 何时会抛出异常?

我在源代码中使用dynamic_cast将指针转换为如下所示,Base*base=herestoringthepointer;Derived*derived=dynamic_cast(base);如果base没有类层次结构的指针,则转换失败并返回NULL。在接下来的几行中,我正在检查NULL。所以没问题。我遇到了故障转储,我的应用程序由于dynamic_cast抛出异常而崩溃。我知道dynamic_cast只有在与引用类型一起使用时才会抛出异常。知道当我在上面的源代码中使用指针时,dynamic_cast会抛出异常吗? 最佳答案 A