问题标签 [implicit-conversion]
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.
c++ - `is_base_of` 是如何工作的?
以下代码如何工作?
请注意,这
B
是私人基地。这是如何运作的?注意
operator B*()
是常量。它为什么如此重要?为什么
template<typename T> static yes check(D*, T);
优于static yes check(B*, int);
?
注意:它是boost::is_base_of
. 这适用于广泛的编译器。
c# - 你如何创建一个可以返回派生类型的工厂?
我已经创建了一个名为 AlarmFactory 的工厂类......
心跳报警来源于Alarm。我收到一个编译错误“无法隐式转换类型...存在显式转换(您是否缺少演员表?)”。如何设置它以返回派生类型?
编辑
谢谢大家的答案。我在十分钟内修复了编译错误,这就是我没有发布整个错误的原因。但我很欣赏提到的不同方法。
作为记录,它是“无法将类型 'goAlarmsCS.HeartbeatAlarm' 隐式转换为 'goAlarmsCS.Alarm' 存在显式转换(您是否缺少演员表?)”。(我认为。)错误发生在第 8 行。
赛斯
java - 条件表达式上缺少 Java 错误?
使用方法test1()
and test2()
,我得到一个Type Mismatch Error: Cannot convert from null to int,这是正确的;但为什么我的方法不一样test3()
?在这种情况下,Java 如何以不同的方式评估条件表达式?(显然, aNullPointerException
会在运行时上升)。它是一个丢失的错误吗?
提前致谢!
c# - C#枚举到字符串自动转换?
是否可以让编译器自动将我的 Enum 值转换为字符串,这样我就可以避免每次都显式调用 ToString 方法。这是我想做的一个例子:
c# - C# 中的隐式数组转换
我有以下类,其中定义了隐式强制转换运算符:
现在,我可以将 A 隐式转换为 B。
但是为什么我不能隐式地将 A[] 转换为 B[] ?
谢谢,马尔基。
scala - 隐式转换为 Runnable?
作为练习,我尝试创建一个隐式转换,它可以接受一个函数并生成一个Runnable
. 这样,您可以调用接受Runnable
对象的 Java 方法并像闭包一样使用它们。
隐式转换很容易:
但是我不知道怎么称呼它。如何传入一个返回 Unit 的无参数函数,而不立即对其进行评估?例如,我希望以下内容打印“12”,但它打印“21”,因为print("2")
它是一次评估的。
我如何告诉编译器将其print("2")
视为函数的主体,而不是立即评估的东西?我尝试了一些可能性,例如
或者
不是合法的语法。
c# - 表达式中的操作数是否根据以下规则提升为更大的类型?
如果数值表达式包含不同数值类型的操作数(常量和变量),则根据以下规则将操作数提升为更大的类型:
- 如果操作数的类型为
byte
,sbyte
,char
,short
,ushort
,它们将被转换为int
类型 - 如果其中一个操作数是
int
,则所有操作数都转换为int
- 如果表达式还包含类型为
uint
and的操作数int
,则所有操作数都转换为long
- 如果操作数之一是
long
,则所有操作数都转换为long
- 如果表达式包含 and 类型的操作数
ulong
,long
则操作数转换为float
- 如果其中一个操作数是
float
,则所有操作数都转换为float
- 如果操作数之一是
double
,则所有操作数都转换为double
假设数字表达式包含不同类型的操作数,所有操作数是否会首先转换为单个数字类型,然后运行时才会尝试计算结果?例如,如果变量b1
andb2
是byte
类型,whilei1
是int
类型,将b1
和 b2get
在计算之前转换为 int (b1+b2)
:
c# - C# 隐式运算符和 ToString()
我正在创建自己的类型来表示 css 值(如像素,例如 12px )。为了能够加/减/乘/...我的类型和整数,我定义了两个隐式运算符来和来自 int。除了一件事,一切都很好。如果我写:
我得到“10”而不是“10px” - 使用到 int 的隐式转换而不是 ToString() 方法。我怎样才能防止这种情况?
c++ - 重载函数调用中的 C++ 隐式转换和歧义
我面临以下问题:我有一个 V 类(比如一个向量),我可以从中生成两个类:CI 和 I(想想 const_iterator 和迭代器)。如果我有一个 const V,那么我只能产生 CI(再次考虑迭代器和 const_iterator)。
基本上我想用(CI ci)和(V&v)用(I i)代替(const V&v)。此外,我希望仍然能够将 V obj 直接传递给期望 I 或 CI 的函数,因此从 V 和 const V 到 CI 和 I 的隐式转换。
我面临的问题是,虽然重载函数可以区分 (const V& v) 和 (V& v),但当我传递 V obj 时,它们无法“区分”(CI ci) 和 (I i)。
在代码中:
请注意,我可以在 V 中定义转换运算符(它是否等效?)而不是在 CI 和 I 中定义构造函数。现在:
有没有办法在不添加任何额外间接性的情况下解决这个问题(即不能修改 fun 函数,并且 v 必须直接传递给 fun,但您可以自由修改其他所有内容)。
预先感谢您的任何帮助!
c# - C# 使用 LINQ 和 Nullable Boolean
我有下面的 linq 查询,它接受一个可能是 Y、N 或 DBnull 的文本字段并填充一个布尔值?参数为 True、False 或 null,具体取决于字段的值。
有问题的行是
阅读后,我发现了一些文档,其中指出内联的第二个和第三个参数是否需要具有相同的类型或可以隐式转换为另一个。
我的问题是,我如何绕过这个限制来达到我想要的结果?
我对 C# 比较陌生,所以还不熟悉它的所有怪癖/功能。