使用c++ Builder 10 Seattle有很多歧义错误
A lot of ambiguity errors using C++ Builder 10 Seattle
在新的c++ Builder 10 Seattle中编译旧代码时,我得到了很多歧义错误。对于像log()这样的函数,例如:
调用log(10)会产生如下错误:
[bcc32错误]E2015 'std::log(float)在c:program文件(x86) 内河码头 studio 17.0 windows crtl 包括math.h: 394和'std::log(长双精度)在c:program files(x86) 内河码头 studio 17.0 windows crtl math.h:包括430年
感觉应该能够处理这种转换。警告,好吧……但是出现错误并且无法编译?编译器在以后的版本中对这一点更严格了吗?代码最初来自 c++ Builder 2010。
其他歧义错误包括void*当HWND预期时,在TDateTimePicker->Time (->Time)上做算术之类的事情。现在必须使用Val等。这是编译器以前所接受的,但现在不是。我很高兴现在似乎更严格了……但是它带来了很多旧代码的修复。
这是因为你给了它一个整数,它不知道结果的浮点类型应该是什么。如果你说log(10.0)
,类型默认为double
,它没有歧义。仅仅因为原始整数没有后缀并不意味着编译器可以假设您想要转换后的浮点值的无后缀版本。随着版本的更新,c++对强类型越来越挑剔,所以在较新的编译器中出现这种坚持并不奇怪。
注:只是添加后缀是行不通的。10f
并不意味着它是float
。您还需要小数或指数(或两者都需要),因此10.f
和1e1f
以及1.e1f
也可以工作。
相关文章:
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- 运算符的歧义错误<<自定义 std::ostream 子类中的重载
- 了解函数错误的歧义新声明
- 在C 中,静态成员函数是否继承了?如果是,为什么没有出现歧义错误
- 在 c++ 中使用重载的歧义错误
- 转换 - 错误 E2015,AnsiString(char) 和 AnsiString(short) 之间的歧义
- C++代码中出现歧义错误
- 可变模板和混合的歧义错误
- 错误:"std::copy "之间的重载歧义
- c++操作符string和char*导致歧义错误
- 使用c++ Builder 10 Seattle有很多歧义错误
- c++歧义符号错误
- 函数重载时出现歧义错误
- c++矢量错误,显示变量有歧义-我已经尝试了一切仍然没有希望
- 为什么这两个构造函数一起不会产生歧义错误?
- C2870符号歧义错误
- 由于模板函数声明中存在歧义而导致错误
- 与第三方头文件相关的C++Builder歧义错误
- 模板类相互使用会产生歧义错误
- 错误:对旧声明“double-round(double)”存在歧义