所以我遇到了麻烦。基本上我只是想将播放器输入的坐标分配给一个数组。
这是代码:
void Board::playerInput(int inputX, int inputY, char symbol)
{
_board[inputX][inputY] = symbol;
}
这里是玩家分配坐标的代码:
void manager::askMove()
{
if (_turn == _player1._playerName){
cout << "insert your x coordinate, " << _player1._playerName << ": ";
_player1.inputX();
cout << "insert your y coordinate, " << _player1._playerName << ": ";
_player1.inputY();
_board.playerInput(_player1.inputX, _player1.inputY, _player1._playerSymbol);
_turn = _player2._playerName;
}
else {
cout << "insert your x coordinate, " << _player2._playerName << ": ";
_player2.inputX();
cout << "insert your y coordinate, " << _player2._playerName << ": ";
_player2.inputY();
_board.playerInput(_player2.inputX, _player2.inputY, _player2._playerSymbol);
_turn = _player1._playerName;
}
}
在我构建代码之后。我收到了这些错误:
Error 2 error C3867: 'Player::inputX': function call missing argument list; use '&Player::inputX' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 52 1 Project1
Error 3 error C3867: 'Player::inputY': function call missing argument list; use '&Player::inputY' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 52 1 Project1
Error 4 error C3867: 'Player::inputX': function call missing argument list; use '&Player::inputX' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 60 1 Project1
Error 5 error C3867: 'Player::inputY': function call missing argument list; use '&Player::inputY' to create a pointer to member c:\users\rlngstrdrgntr\documents\visual studio 2013\projects\project1\project1\manager.cpp 60 1 Project1
我对这些指针并不熟悉。我试过给予&amp;像错误报告上的建议标记,但它只是给我另一个错误。 也许你们可以帮助我。谢谢。
编辑:
这里是inputX decalration
void Player::inputX()
{
cin >> _playerInputX;
}
void Player::inputY()
{
cin >> _playerInputY;
}
答案 0 :(得分:2)
_player2.inputY();
_board.playerInput(_player2.inputX, _player2.inputY, _player2._playerSymbol);
您的Player
课程似乎提供了您在此代码段第一行中调用的方法inputX()
和inputY()
。在第二行中,您正在编写_player2.inputY
,就像它是一个成员变量一样。这就是编译器抱怨的原因:它看起来应该是一个函数调用,但缺少参数列表(()
)。
阅读完编辑后,猜测这就是你真正想做的事情:
_board.playerInput(_player2.playerInputX, _player2.playerInputY, _player2._playerSymbol);
答案 1 :(得分:0)
您的代码存在多个问题。
首先是
class MyClass
{
public:
int var;
void var() { ... }
};
不会编译。 您的方法不能与成员变量同名。 所以在你的情况下你可以做到
class Player
{
int m_x;
int m_y;
...
public:
...
int x() const { return m_x; }
int y() const { return m_y; }
void inputX();
void inputY()
};
其次,您似乎使用名称以下划线开头的全局变量。 对于编译器实现者来说,这些名称是reserved!
此外manager::askMove
包含大量重复代码,整体功能的分布对我来说很奇怪。