问题标签 [dynamic-cast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - types.CodeType() python 调用的参数是什么?
我目前正在尝试为 python 推出我自己的“marshal”代码,这样我就可以在 Google App Engine 上存储已编译的 python 代码,以便以动态方式提供脚本。大家都可以验证,GAE 不支持“marshal”,并且“pickle”不能序列化代码对象。
我发现我可以构造一个代码对象,types.CodeType()
但它需要 12 个参数。
尽我所能,我找不到关于这个调用的任何文档,我真的需要构造代码对象,这样我才能exec()
做到。我的问题是,有谁知道这个types.CodeType()
“构造函数”的参数是什么或任何内省的方法?我已经使用了这里info()
定义的函数,但它只吐出通用信息!
快速常见问题解答:
- 问:为什么要编译代码?
- 答:在 Google App Engine 上,CPU 时间会花费真金白银,而我可以节省的每一点 CPU 周期都很重要。
- 问:为什么不用“元帅”?
- 答:这是Google App Engine 中不支持的模块之一。
- 问:为什么不用“泡菜”?
- A:Pickle 不支持代码对象的序列化。
更新
自 2011 年 7 月 7 日起,Google App Engine 基础架构不允许实例化代码对象,因此我的论点没有实际意义。希望这在未来能在 GAE 上得到解决。
c++ - 将指针作为参数传递给引用时的 C++ 指针转换
我很好奇,是:
完全一样:
作为参考,this->operator<
被调用的是:
哪一个更“正确”并且使用安全/可靠,或者,有什么实际区别吗?
c++ - 什么时候需要dynamic_cast?
可能重复:
c++ 中的 dynamic_cast
这两种将派生类分配给基类指针的方法有什么区别?
c++ - 什么更快:从虚拟基地向下投射或交叉投射?
这有点假设,因为我不太担心性能 - 只是想知道哪个选项实际上是最快/最有效的,或者是否没有任何区别。
假设我有以下代码用于支持重载的访问者模板:
然后将其用于创建通用访问者:
使用访问者最终会导致dynamic_cast<>
's from Visitor
to VTarget<T>
,这是一个交叉转换。
可以实现的另一种方式是创建Visitor
一个虚拟基础VTarget<T>
-MyVisitor
然后不再需要直接从访问者继承。dynamic_cast<>
Visitor::visit 代码中的Visitor
.
执行强制转换时,一种方法比另一种方法快吗?或者您是否只因拥有虚拟基地而受到规模损失?
c++ - 重构建议:如何避免在这个 OO 设计中进行类型检查
我正在寻找有关重构的建议,以改进我的类设计并避免类型检查。
我正在使用命令设计模式来构建菜单树。菜单中的项目可以是各种类型(例如,立即操作[如“保存”]、根据其状态显示带有检查/图标的切换开/关属性[如“斜体”]等)。至关重要的是,还有子菜单,它们替换屏幕上的当前菜单(而不是显示在旁边)。这些子菜单当然包含它们自己的菜单项列表,其中可能有更多嵌套的子菜单。
代码类似于(为简单起见,全部公开):
主菜单只是 Menu 的一个实例,一个单独的类跟踪菜单位置,包括如何进入和退出子菜单:
关键函数是 Position::OnEnterPressed(),您可以在其中看到对 MenuItem::IsMenu() 的调用中的显式类型检查,然后转换为派生类型。有哪些选项可以重构它以避免类型检查和强制转换?
c++ - 在 C++ 中使用 dynamic_cast 的替代方法
我有这些课程:
我想做这个:
由于它不起作用,我该怎么做才能避免这种情况:
谢谢你。
编辑:好的,现在所有的“错误”都已修复。
c++ - 快速的动态铸造进度
不久前,我发现一篇非常有趣的论文,关于 C++ 中 dynamic_cast 的非常简洁的性能升级:http ://www2.research.att.com/~bs/fast_dynamic_casting.pdf 。
基本上,它使 C++ 中的 dynamic_cast 比传统的继承树研究更快。如论文所述,该方法提供了一种快速、恒定时间的动态铸造算法。
这篇论文发表于 2005 年。现在,我想知道该技术是否曾经在某个地方实施过,或者是否有计划在任何地方实施?
c++ - 来自 C++/Stroustrup 的 dynamic_cast 疑问:转换为受保护的基类
我知道以下代码会产生编译错误:
但是为什么他在 C++ Stroustrup 书 (15.4.1) 中写道
该行不应该是编译错误吗?因此,要么我的 gcc 错误地将其标记为编译错误,要么是不可想象的 stroustrup 错字,或者最有可能我错过了一些东西......
c++ - dynamic_cast 如何失败?
根据我阅读的内容,执行错误的运行时 dynamic_cast 可能会引发 bad_cast 异常或返回零。
如果你正在转换指针,它会返回零是否正确?
IE:
并且在转换对象时会抛出 bad_cast 异常?
IE:
c++ - 从函数返回后丢失 RTTI 信息
给定一个类和子类:
注释被克隆并存储在函数 f() 内的指针中。类型信息保存在指针中,可以通过 dynamic_cast 恢复:
现在,从 f() 返回后,类型信息丢失了:
VS 调试器显示一个有效的指针值(未更改),但不是派生类,除了在f()
-scope 中运行时。
从函数返回时,指针的 RTTI 信息如何丢失?