Как решить Неявное преобразование теряет целочисленную точность: «size_t» (он же «unsigned long») в «int» предупреждение? - PullRequest
0 голосов
/ 24 января 2020

Я застреваю с предупреждением на xcode, когда пытаюсь использовать функцию пакета tesseract:

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

Я получаю предупреждение:

Потеря неявного преобразования целочисленная точность: от 'size_t' (он же «unsigned long») до «int»

Как решить проблему?

1 Ответ

0 голосов
/ 24 января 2020

Ссылки: Неявное преобразование , Что такое size_t? и этот пост .

Как сказано в документации:

Неявные преобразования выполняются автоматически, когда значение копируется в совместимый тип.

В вашем случае попытка от int до size_t также является неявное преобразование. Причина, по которой в предупреждении упоминается точность:

  • size_t всегда может хранить больше чисел, чем int .
  • Хотя size_t всегда содержит положительное значение, int может содержать и отрицательные значения.

В соответствии с этими двумя различиями между size_t и int , программа предполагает, что в будущем могут возникнуть некоторые проблемы или потери точности.

В вашем случае вы можете просто преобразовать тип size_t с помощью преобразования static_cast :

static_cast<int>(your_size_t_type_parameter)

Примечание : использование этого метода может исключить ваше предупреждение, но это может привести к некоторым потерям. Например, если ваше значение size_t очень велико.

...