G ++ предупреждение: сужение конверсии

Я пытаюсь скомпилировать hosts3d из sourceforge, и он компилируется, но выдает несколько сужающих ошибок. Я понятия не имею, как это исправить, но любая помощь будет принята с благодарностью. Я подозреваю, что мог бы загрузить предыдущую версию компилятора, и я мог бы в конечном итоге сделать это, но пока … c ++ 11

g ++ -Wall -O2 -c -o src / glwin.o src / glwin.cpp src / glwin.cpp: в функции-члене
‘int MyGLWin :: AddInput (int, int, unsigned int, int, const char *, bool)’:
SRC / glwin.cpp: 983: 147: предупреждение: сужение преобразования ‘max’ из ‘int’ в ‘unsigned int’ внутри {} неправильно сформирован в C ++ 11 [-Wararrowing] glin_obj glin = {GLWIN_INPUT, lastWin, нижний, names ++, левый, верхний, cwidth, strlen (текст), (strlen (текст)> cwidth? strlen (текст ) — cwidth: 0), max};

//create input object, return name of input object
int MyGLWin::AddInput(int left, int top, unsigned int cwidth, int max, const char *text, bool lower)
{
if (!lastWin) return -1;  //check parent window object exists
glin_obj glin = {GLWIN_INPUT, lastWin, lower, names++, left, top, cwidth, strlen(text), (strlen(text) > cwidth ? strlen(text) - cwidth : 0), max};
strcpy(glin.text, text);  //default text
currInput = glin.name;  //set input object focus (for keys)
lastInput = (glin_obj *)GLWinLL.Write(new glin_obj(glin));
return glin.name;
}

4

Решение

Во-первых, это «только» предупреждение, поэтому вы можете игнорировать его, если понимаете, что происходит позади. Здесь значение int max (подписано) будет автоматически преобразовано в unsigned int,

Во-вторых, как функция AddInput кажется, является частью API, вы не можете изменить сигнатуру функции. Так что, если вы действительно хотите удалить предупреждение (не удаляя эффект, описанный ранее), вы можете вызвать приведение с (unsigned int)max,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]