Ive been working on this program that is meant to battle to Fighters. The Fighters are created from the FIGHTER class and fed into an array. This is array is then fed into FightFunction, which does all the work. The program appears to be fine except for the fact that everytime the function tries to use one of the Get class methods I get:

"FIGHT2.cpp": E2235 Member function must be called or its address taken in function FightFunction(FIGHTER *) at line 69

I'm really not sure what the problem is, so any help would be greatly appreciated.

Here is the code:

Code:
#include <iostream>
using namespace std;

class FIGHTER
{
  public:
     FIGHTER();
     ~FIGHTER() { };
     void SetWEAPON(int weaponlevel) { WEAPON = weaponlevel; }
     void SetARMOUR(int armourlevel) { ARMOUR = armourlevel; }
     void SetHP(int hp) { HP = hp; }
     int GetWEAPON() const { return WEAPON; }
     int GetARMOUR() const { return ARMOUR; }
     int GetHP() const { return HP; }
  protected:
     int HP;
     int WEAPON;
     int ARMOUR;
};

FIGHTER::FIGHTER()
{
  HP = 200;
  WEAPON = 1;
  ARMOUR = 1;
}

int FightFunction(FIGHTER fighter_array[2]);

int main()
{
  int result;
  FIGHTER fighter_array[2];
  result = FightFunction(fighter_array);
  switch (result)
  {
  case 1:
    cout << "\n\n\nThe battle was won by player 1";
    break;
  case 2:
    cout << "\n\n\nThe battle was won by player 2";
    break;
  default:
    cout << "\n\n\nNeither player won the battle. Both players died";
    break;
  }


  cin.ignore();
  cin.get();
  return 0;
}

int FightFunction(FIGHTER fighter_array[2])
{
  int random1, random2, winner, r, overallwin;
  cout << "Player 1 has " << fighter_array[0].GetHP << " HP left.";
  cout << "player 2 has " << fighter_array[1].GetHP << " HP left.";
  srand( (unsigned)time( NULL ) );
  r = 1;
  do
    {
    cout << "This is round " << r << ". ";
    random1 = (rand() % 3) + 1;
    random2 = (rand() % 3) + 1;
    if (random1 > random2)
    {
      winner = 1;
      if (fighter_array[0].GetWEAPON > fighter_array[1].GetARMOUR)
      {
        fighter_array[1].SetHP(
        fighter_array[1].GetHP()
        - (20 + ((rand() % (fighter_array[0].GetWEAPON - fighter_array[1].GetARMOUR)) + 1)));

        fighter_array[0].SetHP(
        fighter_array[0].GetHP()
        - ((rand() % 5) + 1));
      }
      else if (fighter_array[0].GetWEAPON < fighter_array[1].GetARMOUR)
      {
       fighter_array[1].SetHP(
       fighter_array[1].GetHP()
       - (10 + (rand() % 5) + 1));

       fighter_array[0].SetHP(
       fighter_array[0].GetHP()
       - ((rand() % 5) + 1));
      }
      else if (fighter_array[0].GetWEAPON == fighter_array[1].GetARMOUR)
      {
        fighter_array[0].SetHP(
        fighter_array[0].GetHP()
        - ((rand() % 5) + 1));

        fighter_array[1].SetHP(
        fighter_array[1].GetHP()
        - (15 + (rand() % 5) + 1));
      }
    }
    else if (random2 > random1)
    {
      winner = 2;
      if (fighter_array[1].GetWEAPON > fighter_array[0].GetARMOUR)
      {
        fighter_array[0].SetHP(
        fighter_array[0].GetHP()
        - (20 + ((rand() % (fighter_array[1].GetWEAPON - fighter_array[0].GetARMOUR)) + 1)));

        fighter_array[1].SetHP(
        fighter_array[1].GetHP()
        - ((rand() % 5) + 1));
      }
      else if (fighter_array[1].GetWEAPON < fighter_array[0].GetARMOUR)
      {
        fighter_array[0].SetHP(
        fighter_array[0].GetHP()
        - (10 + (rand() % 5) + 1));

        fighter_array[1].SetHP(
        fighter_array[1].GetHP()
        - ((rand() % 5) + 1));
      }
      else if (fighter_array[1].GetWEAPON == fighter_array[0].GetARMOUR)
      {
        fighter_array[0].SetHP(
        fighter_array[0].GetHP()
        - (15 + (rand() % 5) + 1));

        fighter_array[1].SetHP(
        fighter_array[1].GetHP()
        - ((rand() % 5) + 1));
      }
    }
    else if (random1 == random2)
    {
      winner = 0;
      fighter_array[0].SetHP(
      fighter_array[0].GetHP()
      - ((rand() % 5) + 1));

      fighter_array[1].SetHP(
      fighter_array[1].GetHP()
      - ((rand() % 5) + 1));
    }

    switch (winner)
    {
      case 1:
      cout << "\n\nThe winner of round " << r << " is Player 1.";
      cout << "\n\nPlayer 1 has " << fighter_array[0].GetHP << " left.";
      cout << "\n\nPlayer 2 has " << fighter_array[1].GetHP << " left.";
      break;
      case 2:
      cout << "\n\nThe winner of round " << r << " is Player 2.";
      cout << "\n\nPlayer 1 has " << fighter_array[0].GetHP << " left.";
      cout << "\n\nPlayer 2 has " << fighter_array[1].GetHP << " left.";
      break;
      case 0:
      cout << "\n\nRound " << r << " was a stalemate";
      cout << "\n\nPlayer 1 has " << fighter_array[0].GetHP << " left.";
      cout << "\n\nPlayer 2 has " << fighter_array[1].GetHP << " left.";
      break;
    }
    r++;
    } while (fighter_array[0].GetHP > 0 && fighter_array[1].GetHP > 0);

  cout << "\n\nThe battle is over!";
  if (fighter_array[1].GetHP <= 0 && fighter_array[0].GetHP > 0)
  overallwin = 1;
  else if (fighter_array[0].GetHP <= 0 && fighter_array[1].GetHP > 0)
  overallwin = 2;
  else if (fighter_array[0].GetHP <= 0 && fighter_array[1].GetHP <= 0)
  overallwin = 0;

  return overallwin;
}
Thanks in advance.