gpt4 book ai didi

C++ 二维数组类函数调用帮助

转载 作者:行者123 更新时间:2023-11-28 03:57:48 25 4
gpt4 key购买 nike

我希望这个问题能得到一个简单的解决,我只是遗漏了一些非常小的东西。

我在大学学习 C++ 的第二个学期,我们刚刚开始学习 OOP。这是我的第一个 OOP 程序,它给我带来了一些小问题。以下是我收到的错误:

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

非常感谢您的帮助!

最佳答案

下面一行:

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

不调用函数。改为这样写:

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

对于其他错误消息也是如此。

生成警告是因为错误行是 displayGrid 唯一一次使用 grid 参数。

关于C++ 二维数组类函数调用帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com