2010-05-01 4 views
0

J'espère que cette question apportera une solution simple, et il me manque juste quelque chose de très petit.C++ 2d Array Classe Fonction Appeler Aide

Je suis dans mon deuxième semestre de C++ au collège, et nous commençons juste à OOP. C'est mon premier programme POO, et cela me cause un petit problème. Voici les erreurs que j'obtiens:

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

Voici l'ensemble de mon code. Je suis conscient qu'il est beaucoup plus de code que nécessaire, désolé si cela le rend plus difficile. J'étais inquiet que je puisse accidentellement supprimer quelque chose.

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

Merci beaucoup pour votre aide!

+0

Il vous aidera si vous soulignez qui lignes de rendement de code les erreurs. –

Répondre

2

La ligne suivante:

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

ne remet pas la fonction. Ecrivez à la place:

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

De même pour les autres messages d'erreur.

L'avertissement est généré car la ligne erronée est la seule heure displayGrid utilise le paramètre grid.

0

Vous avez oublié la fonction parens:

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

devrait être:

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

wow ... merci beaucoup. Je me sens stupide maintenant. – user391686