我正在尝试学习C ++,并试图制作一个简单的TicTacToe游戏。
我创建了一个Board对象。该对象包含一个用于创建播放板的多维数组。
我也创建了Player类的两个对象。两个对象都包含播放器的名称和符号。我为玩家对象创建了一个让玩家移动的方法。他们必须输入Y值和X值。我想在board方法中使用这个值来改变多维数组。
这是获取玩家想要放置其符号的点的整数值的方法之一:
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;
}
这会返回一个整数值,对吗?我对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值相同。
任何帮助将不胜感激!
问候。
答案 0 :(得分:1)
在您的代码中,Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());
您在PlayerTurnY之后没有()
(我想,这是一个错字)。但是编译器看起来像是一个不同的拼写错误 - 编译器认为,你试图得到成员函数的地址而忘记在它前面使用&
。这样做的原因是在C ++之前,在C语言中,人们可以通过输入它的名称来获取函数的地址,所以很多人都认为它在C ++中是相同的 - 而编译器正在尝试帮助他们。
显然,这不是你想要的。
答案 1 :(得分:0)
您忘了将括号放在方法PlayerTurn
的函数调用中编译器正在解释您的语句,就像您尝试获取指向成员函数PlayerTurnX和PlayerTurnY的指针一样。这就是错误消息没有直接指向真正原因的原因。