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

时间:2015-11-27 19:11:11

标签: c++ parameters

我正在尝试学习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值相同。

任何帮助将不胜感激!

问候。

2 个答案:

答案 0 :(得分:1)

在您的代码中,Board1.AddPlayersTurn(Player1.PlayerTurnY, Player1.PlayerTurnX, Player1.GetSymbol());您在PlayerTurnY之后没有()(我想,这是一个错字)。但是编译器看起来像是一个不同的拼写错误 - 编译器认为,你试图得到成员函数的地址而忘记在它前面使用&。这样做的原因是在C ++之前,在C语言中,人们可以通过输入它的名称来获取函数的地址,所以很多人都认为它在C ++中是相同的 - 而编译器正在尝试帮助他们。

显然,这不是你想要的。

答案 1 :(得分:0)

您忘了将括号放在方法PlayerTurn

的函数调用中

编译器正在解释您的语句,就像您尝试获取指向成员函数PlayerTurnX和PlayerTurnY的指针一样。这就是错误消息没有直接指向真正原因的原因。