0

I hope this question takes a simple fix, and I am just missing something very small.

I am in my second semester of C++ in college, and we are just getting into OOP. This is my first OOP program, and it is causing me a little problem. Here are the errors I am getting:

Member function must be called or its address taken in function displayGrid(int,Cell ( *)[20])
Member function must be called or its address taken in function Turn(int,int,Cell ( *)[20])
Member function must be called or its address taken in function Turn(int,int,Cell ( *)[20])
Warning: Parameter 'grid' is never used in function displayGrid(int,Cell ( *)[20])

Here is all of my code. I am aware It is much more code than necessary, sorry if it makes it more difficult. I was worried that I might accidentally delete something.

const int MAX=20;

//Struct Cell holds player and their symbol.
class Cell
{
 private:
  int Player;
  char Symbol;

 public:
  Cell(void);
  void setPlayer(int);
  void setSymbol(char);
  int getPlayer(void);
  char getSymbol(void);

};
 Cell::Cell(void)
 {
  Symbol ='-';
 }

 void Cell::setPlayer(int player_num)
 {
  Player = player_num;
 }

 void Cell::setSymbol(char rps)
 {
  Symbol = rps;
 }

 int Cell::getPlayer(void)
 {
  return Player;
 }

 char Cell::getSymbol(void)
 {
  return Symbol;
 }

  void Turn(int, int, Cell[MAX][MAX]);
  void displayGrid(int, Cell[MAX][MAX]);

void main(void)
{
 int size;

 cout << "How big would you like the grid to be: ";
 cin >> size;

    //Checks to see valid grid size
 while(size>MAX || size<3)
 {
  cout << "Grid size must between 20 and 3." << endl;
  cout << "Please re-enter the grid size: ";
  cin >> size;
 }

 int cnt=1;
 int full;
 Cell grid[MAX][MAX];

 //I use full to detect when the game is over by squaring size.
 full = size*size;
 cout << "Starting a new game." << endl;

 //Exits loop when cnt reaches full.
 while(cnt<full+1)
 {
  displayGrid(size, grid); //calls function to display grid

  if(cnt%2==0)  //if cnt is even then it's 2nd players turn
   cout << "Player 2's turn." << endl;
  else
   cout << "Player 1's turn" << endl;

  Turn(size, cnt, grid); //calls Turn do each players turn

  cnt++;
 }

 cout << endl;

 cout << "Board is full... Game Over" << endl;
 }


void displayGrid(int size, Cell grid[MAX][MAX])
 {
  cout << endl;
  cout << "  ";

  for(int x=1; x<size+1; x++)     // prints first row
   cout << setw(3) << x;       // of numbers.

  cout << endl;

  //Nested-For prints the grid.
  for(int i=1; i<size+1; i++)
  {
   cout << setw(2) << i;

    for(int c=1; c<size+1; c++)
    {
     cout <<  setw(3) << grid[i][c].getSymbol;
    }
    cout << endl;
   }

   cout << endl;
  }

void Turn(int size, int cnt, Cell grid[MAX][MAX])
  {
   char temp;
   char choice;
   int row=0;
   int column=0;

   cout << "Enter the Row: ";
   cin >> row;

   cout << "Enter the Column: ";
   cin >> column;

   //puts what is in the current cell in "temp"
   temp = grid[row][column].getSymbol;

   //Checks to see if temp is occupied or not
   while(temp!='-')
   {
    cout << "Cell space is Occupied..." << endl;
    cout << "Enter the Row: ";
    cin >> row;

    cout << "Enter the Column: ";
    cin >> column;

          temp = grid[row][column].getSymbol; //exits loop when finally correct
     }

   if(cnt%2==0) //if cnt is even then its player 2's turn
   {
    cout << "Enter your Symbol R, P, or S (Capitals): ";
    cin >> choice;
    grid[row][column].setPlayer(1);

   in >> choice;
       }

    //officially sets choice to grid cell
       grid[row][column].setSymbol(choice);
   }

   else //if cnt is odd then its player 1's turn
   {
    cout << "Enter your Symbol r, p, or s (Lower-Case): ";
    cin >> choice;
    grid[row][column].setPlayer(2);

    //checks for valid input by user1
    while(choice!= 'r' && choice!='p' && choice!='s')
    {
     cout << "Invalid Symbol... Please Re-Enter: ";
     cin >> choice;
       }

    //officially sets choice to grid cell.
       grid[row][column].setSymbol(choice);
   }

   cout << endl;
  }

Thanks alot for your help!

1
  • It will help if you point out which lines of code yield the errors. Commented May 1, 2010 at 5:50

2 Answers 2

2

The following line:

 cout <<  setw(3) << grid[i][c].getSymbol;

Doesn't call the function. Write this instead:

 cout <<  setw(3) << grid[i][c].getSymbol();

Likewise for the other error messages.

The warning is generated because the erroneous line is the only time displayGrid uses the grid parameter.

Sign up to request clarification or add additional context in comments.

Comments

0

You forgot the function parens:

 cout <<  setw(3) << grid[i][c].getSymbol;

should be:

 cout <<  setw(3) << grid[i][c].getSymbol();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.