Prístup rozmer posilniť multi-polia v C++

0

Otázka

Keď som spustite nasledovný s varovné príznaky som si typ konverzie varovanie.

#include <boost/multi_array.hpp>

void function (boost::multi_array<unsigned char, 2> matrix) {
  int nrows = matrix.shape()[0];
  int ncols = matrix.shape()[1];
}

Zobraziť výstražné hlásenie nižšie. Znamená to, že som implicitne prevod 'dlho, unsigned int' do pravidelného 'int'?

Ak áno, myslím, že to je to, čo chcem (potrebné vykonať výpočty s nrows, ncols neskôr), a tak ako by som si konverzie jednoznačné?

image.cpp:93:32: warning: conversion to ‘int’ from ‘boost::const_multi_array_ref<float, 2ul, float*>::size_type {aka long unsigned int}’ may alter its value [-Wconversion]
     int nrows = matrix.shape()[0];
boost c++
2021-11-20 23:46:16
1

Najlepšiu odpoveď

1

Znamená to, že som implicitne prevod 'dlho, unsigned int' do pravidelného 'int'?

Áno, to je to, čo to znamená.

Ak nechcete varovanie potom nerobia nrows a ncols byť typu int. Najjednoduchšia vec urobiť, je dajte kompilátor odvodiť typ t. j.

auto nrows = matrix.shape()[0];
auto ncols = matrix.shape()[1];

alebo môžete ich typu size_t, čo je štandardná knižnica používa na veľkosť nádoby a nebude vydávať varovania.

2021-12-04 22:35:52

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................