[英]Floating point and integer ambiguity
我有一个函数(和一个构造函数),应该能够取整数和浮点值。 实际上我希望它采用int64_t
或long double
,所以我想要的是,
class Foo {
public:
Foo(int64_t value=0);
Foo(long double value);
};
但是,如果我这样做并尝试Foo f = 1;
编译器抱怨从int
到Foo
的转换是模糊的。 好的,但是如果我改变第一个构造函数来获取int32_t
就没有这种歧义。 任何人都可以向我解释为什么会这样。
1文字的类型是int。 构造函数都需要转换,int到int64_t vs int到long double。 编译器认为它们中的任何一个都不是优选的,所以它会抱怨。 通过添加Foo(int)构造函数来解决它。 或者转换文字,如(int64_t)1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.