草庐IT

dynamic-proxy

全部标签

c++ - 符合标准的编译器可以拒绝包含来自非多态类型的 dynamic_cast downcast 的代码吗?

这个问题的灵感来自评论here.考虑以下代码片段:structX{};//novirtualmembersstructY:X{};//mayormaynothavevirtualmembers,doesn'tmatterY*func(X*x){returndynamic_cast(x);}一些人建议他们的编译器会拒绝func的正文.但是,在我看来,这是否由标准定义取决于x的运行时值。.来自第5.2.7节([expr.dynamic.cast]):Theresultoftheexpressiondynamic_cast(v)istheresultofconvertingtheexpres

c++ - 你能合法地将dynamic_cast转换为多态类的非多态基类吗

在thisanswer,出现了以下场景:#includestructA{};structB{virtual~B(){}};structAA{};templatestructC:A,T{};intmain(){B*b=newC;AA*aa=newC;assert(dynamic_cast(b));assert(dynamic_cast(aa));//thislinedoesn'tcompile,asexpected}在g++4.8.4(Ubuntu)上,它编译并且断言通过。我的问题是,这真的合法吗?我觉得您根本不应该将dynamic_cast转换为非多态类,但我坦率地承认,我不是这里发生

c++ - 避免 dynamic_cast 的模式

我有一个类:classA{public:virtualvoidfunc(){…}virtualvoidfunc2(){…}};还有一些派生类,比如B、C、D...在95%的情况下,我想遍历所有对象并调用func或func2(),因此我将它们放在一个vector,例如:std::vector>myVec;…for(autoit=myVec.begin();it!=myVec.end();++it)(*it).func();但是,在其余5%的情况下,我想根据它们的子类对类做一些不同的事情。我的意思是完全不同的,比如调用带有其他参数的函数,或者根本不调用某些子类的函数。我已经想到了一些解决这

c++ - dynamic_cast 的正确用例是什么?

我多次被告知(并且在实践中看到我自己)使用dynamic_cast通常意味着糟糕的设计,因为它可以而且应该用虚函数代替。例如,考虑以下代码:classBase{...};classDerived:publicBase{...};...Base*createSomeObject();//MightcreateaDerivedobject...Base*obj=createSomeObject();if(dynamic_cast(obj)){//dostuffinoneway}else{//dostuffinsomeotherway}可以很容易地看出,我们可以将一个虚函数doStuff()

c++ - shared_dynamic_cast 和 dynamic_pointer_cast 的区别

谁能给我解释一下:shared_dynamic_cast和dynamic_pointer_cast来自Boost库?在我看来它们可能是等价的。 最佳答案 给定一个shared_ptr,这两个函数确实是等价的。区别在于shared_dynamic_cast仅适用于shared_ptr的,而dynamic_pointer_cast适用于任何类型的指针(通过重载)。这使您可以对任何指针concept执行动态转换,而不管该指针实际上是如何构成的:#include#includestructfoo{};structbar:foo{voidf(

用于类比较的 C++ dynamic_cast vs typeid

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++equivalentofinstanceof我想知道dynamic_cast和typeid之间的区别仅在于类比较(除了dynamic_cast允许访问子类的方法和typeid仅对类比较有用)。我发现一个两年前的StackOverflow也在问同样的问题:C++equivalentofjava'sinstanceof.但是,它已经有两年了,我不想删除旧帖子(我不确定typeid什么时候出来),所以我想重新问同样的问题,但略有不同。基本上,我有类A和类B,它们都是抽象类C的子类。类C被作为方法的参数接收,我

C++:使用 boost::dynamic_pointer_cast 时出现 "... is not a polymorphic type"

为什么我会收到以下代码的以下错误?1>C:\Libs\boost_1_44\boost/smart_ptr/shared_ptr.hpp(259):errorC2683:'dynamic_cast':'my_namespace::A'isnotapolymorphictype1>D:\[location]\[header_filename].h(35):seedeclarationof'my_namespace::A'1>C:\Libs\boost_1_44\boost/smart_ptr/shared_ptr.hpp(522):seereferencetofunctiontempla

c++ - static_cast 与 dynamic_cast

这个问题在这里已经有了答案:关闭13年前.PossibleDuplicate:Regularcastvs.static_castvs.dynamic_cast我不太明白何时使用静态类型转换和何时使用动态类型转换。请问有什么解释吗? 最佳答案 从基类类型转换为派生类类型时使用dynamic_cast。它检查被强制转换的对象实际上是派生类类型,如果对象不是所需类型,则返回一个空指针(除非你正在强制转换为引用类型——然后它会抛出一个bad_cast异常)。如果不需要此额外检查,请使用static_cast。正如Arkaitz所说,由于dy

javascript - 使用 Apache 的 mod_proxy_wstunnel 连接到 PHP,而不使用第 3 方 API

我是WebSocket世界的新手,即使一周后,我仍然找不到如何在PHP不使用任何第三方库的情况下使用它。或者不确定是否有可能。我有3个问题,1)我们是否必须使用一些第3方API或库,例如Ratchet,PHP-Push-WebSocket或PHPWebSocket使PHP能够通过WebSocket协议(protocol)进行通信?2)如果您对上述问题的回答是肯定的,那么使用Apache的mod_proxy_wstunnel的优势/目的是什么?3)如果我使用任何PHPWebSocket3rdPartyLibrary,那么我还需要启用和使用Apache的mod_proxy_wstunnel

node.js - nginx vs node-http-proxy

请告诉我在部署nodejs应用程序nginx或node-http-proxy时最好使用什么。什么是最健壮的?我需要的基本功能是将所有请求代理到非80帖子负载平衡器Websocket支持 最佳答案 这是一篇关于该主题的精彩文章http://www.exratione.com/2012/07/proxying-websocket-traffic-for-nodejs-the-present-state-of-play/就我个人而言,我在这个领域中使用了很多配置,这一切都归结为你需要什么以及你需要在哪里部署。如果您在自己的硬件(或云切片等