如何解决隐式转换丢失整数精度的问题:将'size_t'(aka'unsigned long')转换为'int'警告?

时间:2020-01-23 22:34:15

标签: c++ xcode opencv ocr tesseract

当我尝试使用tesseract软件包的功能时,我在xcode上遇到警告:

ocr->SetImage(im.data, im.cols, im.rows, 3, im.step);

我收到警告:

隐式转换将失去整数精度:将'size_t'(aka'unsigned long')转换为'int'

我该如何解决问题?

1 个答案:

答案 0 :(得分:0)

参考:Implicit conversionWhat is size_t?this post

如文档所述:

当值是时,隐式转换将自动执行 复制到兼容类型。

在您的情况下,尝试将 int 转换为 size_t 也是隐式转换。警告提及精度的原因:

  • size_t 总是能够存储比 int 更多的数字。
  • size_t 始终为正值,而 int 也可以为负值。

根据 size_t int 的这两个区别,程序假定将来可能会出现一些问题或精度损失。

根据您的情况,您可以简单地使用static_cast conversion转换size_t类型:

static_cast<int>(your_size_t_type_parameter)

注意:使用此方法可以消除警告,但可能会造成一些损失。例如,如果您的size_t值非常大。

相关问题