问题标签 [upcasting]

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.

0 投票
5 回答
1734 浏览

java - 向上转换为对象的 ArrayList,然后向下转换为自定义 ArrayList 的成本

我有一种情况,我从数据库中获取数据,我想将它向上转换到ArrayList of objects然后向下转换到不同的自定义 ArrayList ieList<User>List<Groups>

我的问题是向上转换为对象,然后向下转换为 ArrayList,成本是多少,它是有效的还是好的做法。

已编辑

我不想像等那样获取数据,List<User>, List<Groups>我想ArrayList<objetcs>一次获取数据,然后根据我的需要,我将向下转换数据到ArrayList<User>, ArrayList<Groups>稍后。

0 投票
1 回答
770 浏览

f# - FSharp 和向上转换到接口似乎是多余的

我有以下使用反应式扩展的代码片段:

这行得通。但是,如果我将向上转换为 IDisposable,则代码将无法编译,并引用模棱两可的重载。然而 CompositeDisposable 是一个 IDisposable。为什么类型推理引擎无法解决这个问题?请注意,我几乎一直在 C# 中使用此模式,从 Observable.Create 返回 CompositeDisposable,而无需向上转换。

0 投票
2 回答
9912 浏览

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

我开始在 C++0X/11 中使用智能指针,但遇到了一个特殊的情况。我想使用 shared_ptr 向上转换一个对象的实例。

类 Extend 继承自类 Base,其中 Base 类有一个虚拟析构函数以使其具有多态性(否则 dynamic_pointer_cast 抱怨非多态类转换)。

如果因此:

然后我做:

  1. 安全吗?
  2. 指向该对象的其他指针会发生什么?只有obj把它当作Extend,而其他共享指针仍然把它当作Base?
  3. 向上转换同一个实例是否安全,还是我应该做其他事情?

编辑:谢谢你的回答。我问这个问题的真正原因是使用 SAX 解析器处理 XML 文档,但我被向上/向下转换迷惑了。我想要的是:

但这根本没有意义,我将只使用对象工厂。

0 投票
2 回答
643 浏览

c++ - 向上转换函数指针是否安全?

我有基类Object和一个Event

以及函数指针的 typedef

还有一个不相关的类,它存储两个指针

然后我有一个具体的对象和一个具体的事件

然后像这样称呼它

ConcreteEvent我保证将始终使用正确的事件调用调度程序,即当它封装的函数指针实际上占用时,我不会调用调度程序并传递它SomeOtherConcreteEvent

问题是:这能保证有效吗?在 linux 和 mingw 上的 gcc 4.7 中肯定可以正常工作。

0 投票
2 回答
92 浏览

c# - 将返回的 TypeA 对象转换为派生自 TypeA 的类型

我正在调用一个我不拥有的方法,它返回一个“任务”对象。我想从我的方法中返回该对象,但我还需要覆盖该对象的 Exception 属性。如果底层任务捕获异常,并且我的用户通过 Exception 属性检索该异常,我需要调整他们在返回的异常中看到的数据。

我想知道这个问题是否有比通过反射进行复制更好的解决方案。我真的不想创建一个新实例,但我找不到避免它的方法。

另一种可能性是将 Task 对象包装在我自己的类中。但是我的方法不会返回一个任务(或派生自)对象,这可能会导致下游困难。更不用说实现所有 Task 的公共成员并且只调用基本版本的代码量。

显然,下面的代码不起作用,但从概念上讲,这是我想要做的:

0 投票
5 回答
4424 浏览

c# - 派生类对象如何添加到基类对象列表中

给定以下代码,我从 Shape 继承了一个类 Circle:

怎样才能c加进去ShapeList

0 投票
1 回答
264 浏览

f# - F# 上转型基地

当我想向上base转换到适当的接口类型(即A)以便我可以在其上调用 doA() 时,我得到一个解析错误。我知道basehttp://cs.hubfs.net/topic/None/58670)有点特别,但到目前为止我还没有找到解决这个特定问题的方法。

有什么建议么?

工作的 C# 等价物:

0 投票
5 回答
759 浏览

c# - C#中的继承和容器

我在这里使用 C# 工作,假设我有:

我想,在部分代码中将此 myList 转换为,List< A>,但是当我尝试时,我得到一个错误:

有可能吗?如果是,语法是什么?

0 投票
2 回答
264 浏览

c++ - 删除向上转换为基指针的对象数组

开始将一些库从 msvc 移动到 mingw,当人们想要删除一向上转换的对象时,发现 msvc 的行为非常有趣。即 msvc 做了一些黑魔法(它似乎喜欢这样做),并且下面的代码执行得很好,但是在 mingw(4.7.2(崩溃。我相信 mingw 执行正确,它的 msvc voodoo 就是制作一个问题卧铺虫。

代码:

msvc 2010 的输出

还有 mingw (在毁灭中坠毁)

我的问题是,解决此问题的正确方法是什么。我想出的当前 hackfix 仅涉及尝试向下转换到每个可能的类并在向下转换的指针上调用删除操作:

除了重新设计库(它不是我的)之外,还有更好的方法吗?

0 投票
3 回答
3716 浏览

c++ - 向上转型指针

我对 C++ 中的指针向上转换有疑问。

我要写一个我的问题的例子:

我不知道我错过了什么。我想我完全不明白上扬。请问有什么帮助吗?谢谢

更新错误:

我发现它是如何工作的,如下所示:

但我不明白为什么。

编辑:我的编辑告诉我:“B* 类型的值不能分配给 A* 类型的实体”。这是什么意思?

更准确地说,pB 是由函数返回的。不知道有没有关系:是这样的: