У меня просто было странное поведение из версии g ++ для Windows, которую я получил с Strawberry Perl. Это позволило мне опустить заявление о возврате.Опускание оператора return в C++
У меня есть функция-член, которая возвращает структуру, состоящую из двух указателей, называется boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
Эта функция дала мне плохой выход, и я обнаружил, что у него не было возврата заявления. Я должен был вернуть retBoundTag
, но забыл написать инструкцию return. Как только я добавил return retBoundTag;
все было хорошо.
Но я проверил эту функцию и получил правильный результат boundTag
. Даже сейчас, когда я удаляю оператор return, g ++ компилирует его без предупреждения. WTF? Думает ли он вернуть retBoundTag
?
Вы должны скомпилировать с помощью '-Wall'. Недопустимые операторы return захватываются '-Wreturn-type'. – jweyrich
Я склоняюсь к предупреждению о недостающем возвращении в ошибку: '-Werror = return-type'. Сэкономил мне много времени. –