使用方法 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 的指针一样。这就是为什么错误信息没有直接指向真正的原因。