CImg<float>* img = NULL;
bool loaded;
while ( !loaded )
{
loaded = true;
try
{
img = &CImg<float>( filename );
}
catch ( CImgException )
{
loaded = false;
fprintf( stdout, "ERROR: could not load %smap file.\n", mapname );
}
}
Когда я ввожу правильное имя файла изображения, которое CImg может найти и прочитать, img.width()
а также img.height()
оба возвращаются -858993460
, Согласно документация, img.width()
возвращаемый тип int
, но значение при получении img._width
, unsigned int
,
Как упоминалось в комментарии GManNickG, в строке img = &CImg<float>( filename );
временный объект типа CImg<float>
создан и хранит его адрес в img
переменная. Этот временный объект действителен только внутри блока:
try
{
img = &CImg<float>( filename );
}
Он разрушается, когда выполнение выходит из этой области, и у вас есть недопустимый указатель со случайным содержимым (например, -858993460
в _width
поле).
Других решений пока нет …