使用方法 return 值作为参数 c++
Use method return value as parameter c++
我正在努力学习 C++ 并尝试制作一款简单的 TicTacToe 游戏。
我创建了一个 Board 对象。该对象包含一个多维数组来创建游戏板。
我还创建了 class 播放器的两个对象。这两个对象都包含玩家的名字和符号。我为玩家对象创建了一个方法来让玩家移动。他们必须输入一个 Y 值和一个 X 值。我想在板方法中使用此值来更改多维数组。
这是获取玩家想要放置其符号的位置的整数值的方法之一:
int Player::PlayerTurnX()
{
int x;
cout << "Enter the x-axe number which column you want to place your " << _symbol << ". ";
cin >> x;
while (!(x == 1 || x == 2 || x == 3)) {
cout << "Please enter a number between 1 and 3. ";
cin >> x;
return x;
}
return x;
}
这个returns是一个整数值吧?我对 Y 值有同样的方法(我不知道如何通过 1 种方法传递 2 个值,尝试了一个数组但无法让它工作)。
那么我的换板方法是这样的:
void Board::AddPlayersTurn(int spoty, int spotx, char symbol) {
int y = spoty;
int x = spotx;
string symbol1 = to_string(symbol);
_boardSpots[y][x] = " " + symbol1 + " ";
}
那么剩下的就是调用方法了。我想使用 X 和 Y 方法作为我的换板方法的参数:
Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
Board1.printBoard();
printBoard() 是一种将其打印到命令提示符的简单方法。
尝试执行此操作时出现此错误:
'Player::PlayerTurnY': non-standard syntax; use '&' to create a pointer to member
X 值也一样。
如有任何帮助,我们将不胜感激!
你好。
在您的代码中,Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
您在 PlayerTurnY 之后没有 ()
(我想,这是一个错字)。但是对于编译器来说,它看起来像是一个不同的错字——编译器认为,您试图获取成员函数的地址,但忘记在它前面使用 &
。这样做的原因是在 C++ 之前,在 C 中人们可以通过输入它的名字来获得函数的地址,所以很多人认为它在 C++ 中是相同的方式 - 编译器正在试图帮助他们。
显然,这不是你想要的。
您忘记在 PlayerTurn 方法的函数调用处加上括号
编译器正在解释您的语句,就像您试图获取指向成员函数 PlayerTurnX 和 PlayerTurnY 的指针一样。这就是为什么错误信息没有直接指向真正的原因。
我正在努力学习 C++ 并尝试制作一款简单的 TicTacToe 游戏。
我创建了一个 Board 对象。该对象包含一个多维数组来创建游戏板。
我还创建了 class 播放器的两个对象。这两个对象都包含玩家的名字和符号。我为玩家对象创建了一个方法来让玩家移动。他们必须输入一个 Y 值和一个 X 值。我想在板方法中使用此值来更改多维数组。
这是获取玩家想要放置其符号的位置的整数值的方法之一:
int Player::PlayerTurnX()
{
int x;
cout << "Enter the x-axe number which column you want to place your " << _symbol << ". ";
cin >> x;
while (!(x == 1 || x == 2 || x == 3)) {
cout << "Please enter a number between 1 and 3. ";
cin >> x;
return x;
}
return x;
}
这个returns是一个整数值吧?我对 Y 值有同样的方法(我不知道如何通过 1 种方法传递 2 个值,尝试了一个数组但无法让它工作)。
那么我的换板方法是这样的:
void Board::AddPlayersTurn(int spoty, int spotx, char symbol) {
int y = spoty;
int x = spotx;
string symbol1 = to_string(symbol);
_boardSpots[y][x] = " " + symbol1 + " ";
}
那么剩下的就是调用方法了。我想使用 X 和 Y 方法作为我的换板方法的参数:
Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
Board1.printBoard();
printBoard() 是一种将其打印到命令提示符的简单方法。
尝试执行此操作时出现此错误:
'Player::PlayerTurnY': non-standard syntax; use '&' to create a pointer to member
X 值也一样。
如有任何帮助,我们将不胜感激!
你好。
在您的代码中,Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
您在 PlayerTurnY 之后没有 ()
(我想,这是一个错字)。但是对于编译器来说,它看起来像是一个不同的错字——编译器认为,您试图获取成员函数的地址,但忘记在它前面使用 &
。这样做的原因是在 C++ 之前,在 C 中人们可以通过输入它的名字来获得函数的地址,所以很多人认为它在 C++ 中是相同的方式 - 编译器正在试图帮助他们。
显然,这不是你想要的。
您忘记在 PlayerTurn 方法的函数调用处加上括号
编译器正在解释您的语句,就像您试图获取指向成员函数 PlayerTurnX 和 PlayerTurnY 的指针一样。这就是为什么错误信息没有直接指向真正的原因。