使用方法返回值作为参数c++

Use method return value as parameter c++

本文关键字:参数 c++ 返回值 使用方法      更新时间:2023-10-16

我正在努力学习C++,并试图制作一个简单的TicTacToe游戏。

我创建了一个Board对象。这个对象包含一个多维数组来创建剧本。

我还创建了两个类Player的对象。这两个对象都包含玩家的名称和符号。我为玩家对象创建了一个方法,让玩家移动。他们必须输入一个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;   
}

这会返回一个整数值,对吧?我对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的指针一样。这就是为什么错误消息没有直接指向真正的原因。