Я пытаюсь получить доступ к нескольким элементам между двумя разными векторами внутри цикла for.Visual Studio выдает мне следующее предупреждение C26451;
Арифметическое переполнение: использование оператора '+' для 4-байтового значения и затем приведение результата к 8-байтовому значению.Приведите значение к более широкому типу, прежде чем вызывать оператор '+', чтобы избежать переполнения (io.2).
Я пробовал приводить различные типы данных, но понимаю, что должен использовать итераторы для перемещения по вектору.в цикле однако, поскольку я использую два вектора в цикле и несколько элементов для каждого вектора одновременно, я не могу найти способ правильно реализовать это. Вот две разные функции, в которых у меня та же проблема;
Первая функция;
Mat drawRails(Mat draw, vector<Point>lLines, vector<Point>rLines) {
//draw rails to the input image
for (int j = 0; j < lLines.size() - 1; j++) {
//draw rails - accessing point j and next point to correctly define the line
line(draw, lLines[j], lLines[j + 1], Scalar(255, 255, 255), 4);
line(draw, rLines[j], rLines[j + 1], Scalar(255, 255, 255), 4);
}
return draw;
}
Вторая функция;
Mat drawHazardLines(Mat draw, vector<Point>lLines, vector<Point>rLines, int frameNum) {
//draw hazard lines to track
for (int j = 0; j < lLines.size() - 1; j++) {
//draw outwards moving rail lines - divide rail width by ten and multiply by modulo 10 of frame to achieve motion
int railDistNext = (rLines[j + 1].x - lLines[j + 1].x) / 10 * (frameNum % 10) + 2;
int railDist = (rLines[j].x - lLines[j].x) / 10 * (frameNum % 10) + 2;
Point Low, High;
Low = Point(lLines[j].x - railDist, lLines[j].y);
High = Point(lLines[j + 1].x - railDistNext, lLines[j + 1].y);
line(draw, Low, High, Scalar(0, 0, 255), 4);
Low = Point(rLines[j].x + railDist, rLines[j].y);
High = Point(rLines[j + 1].x + railDistNext, rLines[j + 1].y);
line(draw, Low, High, Scalar(0, 0, 255), 4);
}
return draw;
}
Код работает нормально, но выдает вышеупомянутые ошибки, которые я хотел бы устранить