Как устранить ошибку "Не все пути управления возвращают значение" для целых чисел - PullRequest
0 голосов
/ 28 мая 2020

У меня ошибка «Не все пути управления возвращают значение». Я видел это раньше и смог разрешить это для простого возвращаемого значения типа bool. Это немного отличается и кажется мне проблемой, поскольку он имеет for-l oop и в то же время возвращает целые числа. См. Мой код ниже:

int ArrowedCandleIndex  () {

      for (int i=0; i<NumBars; i++)
      {
         double dnArrow = iCustom(Symbol(),Period(),ARROWS_SIGNAL_NAME,ARROWS_SIGNAL_BUFFER_DN,i);
         double upArrow = iCustom(Symbol(),Period(),ARROWS_SIGNAL_NAME,ARROWS_SIGNAL_BUFFER_UP,i);

         if ((dnArrow!=EMPTY_VALUE) && (DoubleToStr(dnArrow,Digits()) != "0.00000"))  {

            currentArrowedCandleIndex = NumBars;

            return currentArrowedCandleIndex;
            }
         if ((upArrow!=EMPTY_VALUE) && (DoubleToStr(upArrow,Digits()) != "0.00000"))  {
            currentArrowedCandleIndex = NumBars;

            return currentArrowedCandleIndex;
            }
      }
  }

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 28 мая 2020

Q : « Как я могу решить эту (« Не все пути управления возвращают значение ») проблема? "

int ArrowedCandleIndex  () {

      for ( int i = 0; i <  NumBars; i++ )
      {
         ...    
         if (  (  EMPTY_VALUE != dnArrow )
            && ( "0.00000"    != DoubleToStr( dnArrow, Digits() ) )
               ) {
                 ...
                 return currentArrowedCandleIndex; // ------------ JIT/RET--(a)
         }

         if (  (  EMPTY_VALUE != upArrow )
            && ( "0.00000"    != DoubleToStr( upArrow, Digits() ) )
               ) {
                 ...
                 return currentArrowedCandleIndex; // ------------ JIT/RET--(b)
            }
      }
      return EMPTY_VALUE; // ------------------------------------- JIT/RET--(c)
  }
...