'Keep getting error message not all control paths return a value

bool isEnemy(const string& check) {
  if (check == enemy1 || check == enemy2 ||
      check == enemy3)  // if the name being checked is an enemy of this knight
    return true;
  else
    return false;
}

int Canidate(Knight b) {  //'b' is an enemy of 'a' who is in the seat before
                          //'b'(ie. b seat=2 a seat=1
  int toSwap = b.seatingPos;  // toSwap holds seating pos # of 'b'
  int checkFriends = (toSwap - 1);  // holds seating pos of 'a'
  for (int i = 0; i < 8; i++) {
    if (!(table[i].isEnemy(table[checkFriends].getName())))  // if not enemies,
                                                             // then must be
                                                             // friends
    {
      friends.push_back(table[i].seatingPos);  // adds seating # of friends of
                                               // 'a' to friends vector
    }
  }
  for (int j = 0; j < 3; j++) {  // check friends of 'a' to see if their
                                 // neighbor is friends with 'b'
    int check2 =
        table[friends[j]].seatingPos;  // check 2 holds seating pos # of 'c'
    if (!(table[toSwap].isEnemy(
            table[(friends[j] + 1)]
                .getName()))) {  // if neighbor of c is friends with b(toSwap)
      return check2;  // if not enemies then must be friends return seating pos
                      // of acceptable canidate
    }
  }
}

table is a vector<Knight>. friends is a vector<int>



Solution 1:[1]

This is a problem which occurs when there is a way for your function to skip over the cases in which you have specified a return.

This is an example of this:

int funct() {
    int a = 3;
    if(a == 4) {
        return a;
    }
}

if "a" is 4 then we know what to return. But if "a" is not 4 the function does not know what to return. To correct this you need to give the function a return statement that will cover the rest of the cases that are possible.

int funct() {
    int a = 3;
    if(a == 4) {
        return a;
    }
    return -1;
}

this way all paths that the function can take have been covered and the function knows what to return if it "a" is not equal to 4.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 halfer