我有两个重载函数,如下所示:
uint32_t
它为void print(int i) { ... }
void print(float f) { ... }
提供了这个错误:
print(1.2);
任何人都可以解释我为什么吗?
答案 0 :(得分:4)
1.2是双字面而不是浮点数。
因此编译器需要明确消除歧义。
1.2f可以工作,因为它是一个浮点文字。
答案 1 :(得分:1)
它将1.2解释为双。将它投射到浮子将解决问题。
print(float(1.2));
答案 2 :(得分:1)
1.2
是double
字面值,使您尝试调用的函数含糊不清 - double
可以很容易地被截断为float
或到int
。使用float
文字(1.2f
)或明确地投射它可以解决问题。