2010-05-01 8 views
0

Надеюсь, этот вопрос займет простое исправление, и я просто пропустил что-то очень маленькое.C++ 2d Array Class Function Call Help

Я нахожусь в своем втором семестре C++ в колледже, и мы просто попадаем в ООП. Это моя первая программа ООП, и это вызывает у меня небольшую проблему. Вот ошибки, которые я получаю:

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]) 

Вот мой код. Я знаю, что это гораздо больше кода, чем нужно, извините, если это усложняет ситуацию. Я беспокоился, что я случайно удалю что-нибудь.

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; 
    } 

Большое спасибо за помощь!

+0

Это поможет, если вы указать, какие строки кода выход ошибки. –

ответ

2

Следующая строка:

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

Не вызывает функцию. Вместо этого напишите это:

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

Аналогично другим сообщениям об ошибках.

Предупреждение генерируется, потому что ошибочная линия является единственным временем displayGrid использует параметр grid.

0

Вы забыли функцию Паренс:

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

должно быть:

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

wow ... большое спасибо. Теперь я чувствую себя глупо. – user391686