implicit-conversion 相关问题

将对象,变量或值从一种类型转换为另一种类型以满足类型限制,而无需通过语言语法专门请求转换。

是什么启发了开发人员开发磅到公斤转换器 Chrome 扩展?

题为“为开发人员简化重量转换”的项目旨在解决的问题是,转换重量(即磅和公斤)通常会发生...

回答 0 投票 0

隐式转换泛型类型

我有一个通用的 Result 类 我想编写一个隐式运算符函数,以便可以将 Result-T 转换为 Result-V,但我不知道该怎么做。 公开课成绩 { 公共布尔

回答 1 投票 0

Scala 3 中 Union Type 和 Either 之间的隐式转换

我正在尝试从 Error | 类型开发一个隐式转换器。 A 在 Scala 3 中输入 Either[Error, A]。转换器的代码如下: 对象我的转换: 给定 unionTypeToEither[错误...

回答 1 投票 0

从 const char[] 到带有字符串构造函数的类

我尝试将字符串传递给函数而不是 A 类的对象,但出现错误。 为什么它不工作,我怎样才能让它工作? #包括 A类{ 民众: A(const std::...

回答 4 投票 0

从非常量到常量对模板参数的隐式转换以及在 C++ 中的 unoredered_map::insert 上调用复制/移动向量

代码 #包括 #包括 #包括 使用命名空间 std; 结构体 Foo { Foo(const int value) : val(值) { 计算<< "Foo(in...

回答 1 投票 0

使用 F# Seq.cast 时出现意外的转换异常

C# 库 公共A类 { 公共静态隐式运算符 B(A a) => new B(); } 公开B级 { } 在此 F# 代码中使用 让 someAs = [A(); A(); A()] 让 someBs1 = someAs |> Seq.m...

回答 1 投票 0

带有隐式转换的类型类中的堆栈溢出

我为 Scanamo 制作了一个通用的 DynamoFormat,它将任何定义了 Circe 编码器和解码器的对象作为 Json 字符串放入数据库中。 导入 com.gu.scanamo.DynamoFormat 导入 io.circe....

回答 1 投票 0

Int 1 总是隐式转换为 1 天吗?

在 SQL Server 中,存在隐式转换数据类型的规则。 在此文档页面上有一个关于可以进行哪些转换的表格。 在此文档页面上,我们可以看到得到了什么

回答 1 投票 0

为什么选择向 int 的转换而不是向矢量的转换<int>

结构A { A(std::向量 x): x_(std::move(x)) {} 内联运算符 std::vector() { 返回x_; } 内联运算符 int() { 返回 x_[0...

回答 1 投票 0

模板推导和隐式构造函数:有没有办法使模板推导与隐式转换一起工作?

有没有办法让模板推导与(隐式)转换一起工作?就像下面的例子: 模板结构A {}; 模板结构B { B(A...

回答 2 投票 0

ZIO Quill:找不到类型模型的隐式 SchemaMeta。Pet

我目前正在使用 ZIO 和 Quill 开发宠物商店应用程序。作为学习过程的一部分,我建立了一个本地 H2 数据库并将其配置为存储宠物信息。然而,我遇到了...

回答 1 投票 0

如何编写从 Foo<T> 到 Foo<T const> 的转换?

我正在为具有克隆函数的类编写一个继承自 std::unique_ptr 的类: 模板 cl_ptr 类:公共 std::unique_ptr { 民众: cl_ptr() 不...

回答 1 投票 0

在 Scala 2/3 中,为什么不能链接拆箱或视图边界(如在 OCaml 中),以及如何修复/规避它?

考虑以下示例,源自 Scala 3 关于上下文抽象的官方手册: https://docs.scala-lang.org/scala3/guides/migration/incompat-contextual-abstractions.html#view-

回答 1 投票 0

ranges::to() 错误:请求转换为非标量类型

#包括 #包括 #包括 使用命名空间 std; struct Edge{int from, to;}; 常量向量 v1 = {1, 1} , v2 = {2,2}; 矢量 v...

回答 1 投票 0

如何知道编译器使用的隐式转换?

在一个大项目中,我有这段代码,编译得很好,但我不明白为什么。 std::vector foo; if(foo == 1) // 这是错误,好的代码是“if(foo.size() == 1)”...

回答 1 投票 0

拟合具有 2 个参数的隐式函数的数据

我有一个自变量 sB 和因变量 H 的隐函数,有两个参数 kV 和 km,描述了一个化学实验。我尝试拟合实验获得的对数...

回答 1 投票 0

lambda 表达式如何与隐式转换一起使用?

我对 C# 如何处理隐式转换的 lambda 表达式有点困惑。 我的目标类似于以下最小示例: A.DoSomething(x => x == 42); 公共静态

回答 1 投票 0

c# 从基类的隐式转换

我有一个像这样的集合类: 公共类 SomeDataCollection :列表 { // 一些方法... } 但我不能这样做: SomeDataCollection someDatas = 新列表 我有一个像这样的集合类: public class SomeDataCollection : List<ISomeData> { // some method ... } 但我不能这样做: SomeDataCollection someDatas = new List<ISomeData>(); 无法隐式将类型 List<ISomeData> 转换为 SomeDataCollection。存在显式转换(您是否缺少转换?) 所以我尝试在SomeDataCollection集合类中创建一个隐式转换程序: public static implicit operator SomeDataCollection(List<ISomeData> l) { var someDatas = new SomeDataCollection(); someDatas.AddRange(l); return someDatas; } 但它说我无法创建这样的转换器: SomeDataCollection.implicit operator SomeDataCollection(List<ISomeData>):不允许与基类进行用户定义的转换 当我像这样投射它时: SomeDataCollection someDatas = (SomeDataCollection)new List<ISomeData>(); 它抛出一个错误: System.InvalidCastException: 无法将 List<ISomeData> 类型的对象强制转换为 SomeDataCollection 类型。 我该怎么做: SomeDataCollection someDatas = new List<ISomeData>(); 没有出现错误?请帮忙。预先感谢。 A new List<ISomeData>(); 仍然只是 List<ISomeData>。这不是SomeDataCollection。子类化的要点是子类可以有额外的状态等,但是对象(一旦创建)永远不会改变类型。 不允许在同一层次结构中的类型之间创建运算符,因为这会破坏通常和预期的转换行为。 您可以简单地使用: var data = new SomeDataCollection(); 但是我应该补充一点,坦率地说,子类化List<T>很少有用。最重要的是,它没有公开任何有用的 virtual 方法,因此您无法调整行为。老实说,我只会使用 List<ISomeData>(并完全删除 SomeDataCollection),除非我有明确且可证明的目的。然后:我可能会封装列表,或者继承Collection<T>。 您总是可以将该方法添加为扩展方法吗? public static class Utils { public static void SomeMethod(this IList<ISomeData> list) { ... } } 然后: var list = new List<ISomeData>(); ... list.SomeMethod(); 首先,为什么要将new List<ISomeData>写入定义为SomeDataCollection的变量中? 有可能你真的想要 SomeDataCollection someDatas = new SomeDataCollection(); 至于错误消息,第一条错误消息告诉您List<ISomeData>不是从SomeDataCollection派生的,因此您不能用它做一些您可以用SomeDataCollection做的事情,因此您不能将它写入定义为 SomeDataCollection 的变量(想象一下,如果 SomeDataCollection 中有 public void someMethod(),稍后在代码中您将调用 someDatas.someMethod())。 第二条错误消息告诉您转换器用于在完全不同的类型之间进行转换,而不是在基础类型和派生类型之间进行转换。否则,您期望得到什么,例如在以下示例中: SomeDataCollection a = new SomeDataCollection(); List<ISomeData> b = (List<ISomeData>)a; SomeDataCollection c = (SomeDataCollection)b; 它是否应该调用您的转换器? 基本上,您尝试编写的代码一开始就是非常错误的,因此我们需要知道您想要做什么,然后也许我们能够告诉您根本问题的解决方案(而不是根本问题的解决方案)问题“如何使这段代码编译”)。 在SomeDataCollection中实现构造函数不是更好吗? public SomeDataCollection() : base() { } 这当然可以补充 public SomeDataCollection(IEnumerable<ISomeData> collection) : base(collection) { } 然后你应该能够像这样初始化你的SomeDataCollection: SomeDataCollection someData = new SomeDataCollection(); SomeDataCollection someOtherData = new SomeDataCollection(collectionOfSomeData); 并且仍然可以访问 List<ISomeData> 中的所有公共方法和属性。 泛型没有问题。在 C# 中,不允许将基类显式转换为派生类。 我只是无法理解为什么存在从类类型到其任何基类类型的隐式转换。 例如,C# 文档中提供了一个示例... 要有一些课堂要点 public Point { int X; int Y; point (int x, int y) { X = x; Y = y; } } Now u declare some class Point3D inherited from Point class public class Point3D:Point { int Z; Point3D (int x, int y, int z) : base (x, y) { Z = z; } } 现在您可以将某些代码中的某些点声明为... Point a = new(10, 20); Point b = new Point3D(10, 20, 30); 这一切是不是造成了一些混乱?我的意思是这里类型安全的含义是什么?实际上,3D 点和 2D 点不是不同的实体吗?不是吗?并且相同类型的 Point 变量可以引用 Point3D 类型对象。 你可以做任何事,没有问题。毕竟,它只是下面的一个指针。所以基本上所有类型的指针或引用在机器上的大小都相同。那么为什么不将任意类型的指针转换为任意类型呢?引用是引用类型或指针......它可以保存任何引用类型。为什么只停留在继承的类基类场景中? 如果你允许这样的事情,那么有人可能会为该代码的未来维护者创建令人困惑的代码,不是吗? 我对所有这些编程都是新手,所以不太了解。所以如果从你的角度来看这是愚蠢的,请原谅我,但我想清除我心中的这种困惑。

回答 5 投票 0

为什么这个函数调用不明确,转换为 bool 需要额外的步骤?

考虑以下代码: 结构体Foo { typedef bool (*fptr_t)(int); 运算符 fptr_t() const { 返回_func; } fptr_t_func; }; 类包装器 { 民众: 包装纸(...

回答 1 投票 0

在 C# 中是否可以为可空值和不可空值编写隐式转换运算符?

我正在尝试编写一个 Alias 类,它使我能够: int n = 新计数(1); 也就是说,它在本例中将 int 封装为 Count,这提供了一些类型安全性和域含义,同时它

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.