предупреждение C4715: ‘operator ==’: не все пути управления возвращают значение

Я продолжаю получать эту ошибку, и я не понимаю, почему. Компилятор сказал мне, что это было в этом разделе.

Любая помощь будет принята с благодарностью

bool operator==(const Bitmap& b1, const Bitmap& b2){
// TODO: complete the == operator
if ((b1.height == b2.height) && (b1.width == b2.width))
{

for (int r = 0; r < b1.height; r++)
{

for (int c = 0; c < b1.width; c++)
{
if (b1.get(r, c) == b2.get(r, c))
{

}
else
return false;
}

}

}
else
return false;
}

0

Решение

Диагностика от компилятора это именно то, что он говорит.

Обратите внимание, что если цикл for проходит до конца, без выполнения условия if, которое возвращает false, если r достигает b1.height значение, путь выполнения достигнет конца этой функции без явного return,

0

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

Сообщение об ошибке говорит, что не так.

bool operator==(const Bitmap& b1, const Bitmap& b2){
// TODO: complete the == operator
if ((b1.height == b2.height) && (b1.width == b2.width))
{

for (int r = 0; r < b1.height; r++)
{

for (int c = 0; c < b1.width; c++)
{
if (b1.get(r, c) == b2.get(r, c))
{

}
else
return false;
}

}
return true; // I guess you forgot this line

}
else
return false;
}
0

Ну, это именно то, что говорит об ошибке. Компилятор не знает, есть ли вероятность того, что код во вложенном цикле for может быть запущен. Предполагая, что первое условие истинно, существует вероятность того, что код никогда не попадет в оператор return. Поэтому компилятор будет гарантировать, что что-то всегда возвращается, независимо от того, какое условие вы ему даете.

bool operator==(const Bitmap& b1, const Bitmap& b2){
if ((b1.height == b2.height) && (b1.width == b2.width))
{
// The compiler expects a return statement that is always reachable inside this if.

for (int r = 0; r < b1.height; r++)
{

for (int c = 0; c < b1.width; c++)
{
if (b1.get(r, c) == b2.get(r, c))
{

}
else
return false; //This isn't always reachable.
}

}
}
else
return false; // This case is covered, so nothing wrong here.
}
0

Это просто.

bool operator==(const Bitmap& b1, const Bitmap& b2){
// TODO: complete the == operator
if ((b1.height == b2.height) && (b1.width == b2.width))
{

for (int r = 0; r < b1.height; r++)
{

for (int c = 0; c < b1.width; c++)
{
if (b1.get(r, c) == b2.get(r, c))
{

}
else
return false;
}

}
// if your function runs to end of for loop, you get to here
}
else
return false;
//then here
return false;   //<-- add this
}
0

Сообщение об ошибке довольно ясно.

bool operator==(const Bitmap& b1, const Bitmap& b2){

if ((b1.height == b2.height) && (b1.width == b2.width))
{
for (int r = 0; r < b1.height; r++)
{
for (int c = 0; c < b1.width; c++)
{
...
}
}
return ???;   // What should be returned here?
}
else
return false;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector